/Piped-Alpine

Run Piped backend and proxy on Alpine Linux

Primary LanguageShell

Piped-Alpine

  • Patches for backend source code to make it work on Alpine
  • Simple build script and start.sh
  • OpenRC configs

Patches may outdate, so open an issue if you get an error while script applies them.

How to build

  1. Install dependencies: doas apk add git openjdk17 openjdk21 7zip (Note that both OpenJDK 17 and 21 are installed, for building reqwest4j and Piped respectively)
  2. Install Rust: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    (Note that you don't need doas or sudo here)
  3. Enter to RustUp environment: source ~/.cargo/env
  4. Run the script: ./build.sh
    (bash build.sh if you executed previous commands from bash)

You can set environment variables ARCH=x86_64|aarch64|armv7..., LIBC=musl|gnu|musleabi|gnueabi, e.g. ARCH=aarch64 ./build.sh. They default to x86_64 musl.

How to start Piped

  1. Edit config.properties
  2. Change /home/piped in start.sh to directory where piped JAR and config are located
  3. Run the script: ./start.sh

OpenRC

  1. Change /home/piped in piped.init to directory where piped JAR and config are located
  2. Change command_user="piped" in piped.init to the Piped's user name
  3. Copy this init script: doas cp piped.init /etc/init.d/piped
  4. Add it to autostart: doas rc-update add piped
  5. Start the service: doas service piped start

I also need to start a proxy, right?

Yes.

This repo is dedicated only to patches for Piped's backend, but I've included an OpenRC config for proxy and this small explanation below.

Build

Building proxy is quite easy:

git clone https://github.com/TeamPiped/piped-proxy
cd piped-proxy
cargo build --release
cp target/release/piped-proxy ..
cd ..

Start

Command: UDS=1 ./piped-proxy

  • With UDS=1, it creates a Unix socket in ./socket/actix.sock instead of listening on TCP port.
  • Without UDS=1, it listens for HTTP connections on :8080 port.
  • If you want to specify other TCP port, use BIND=127.0.0.1:8080 variable (replace port and host with your own), and do not enable UDS.

Create socket directory before the first start if you have enabled UDS.
Also, check if the user from which the proxy is started has write access to the socket/.

OpenRC

The same as in Piped backend.
Copy proxy.init replacing the directory and user, replacing UDS=1 with BIND=... if needed.
I've set nginx as user because otherwise my reverse proxy won't have access to the socket file.