mirror of
https://github.com/v0l/route96.git
synced 2025-06-15 07:56:32 +00:00
156
docs/debian.md
Normal file
156
docs/debian.md
Normal file
@ -0,0 +1,156 @@
|
||||
# Debian/Ubuntu Install
|
||||
|
||||
**Tested on Ubuntu 24.04.1 LTS**
|
||||
|
||||
## Building
|
||||
|
||||
Install dependencies:
|
||||
|
||||
```bash
|
||||
sudo apt install \
|
||||
libavutil-dev \
|
||||
libavformat-dev \
|
||||
libavfilter-dev \
|
||||
libavdevice-dev \
|
||||
libavcodec-dev \
|
||||
libswscale-dev \
|
||||
mariadb-server \
|
||||
clang
|
||||
```
|
||||
|
||||
If you don't already have rust compiler installed, use rustup:
|
||||
|
||||
```bash
|
||||
sudo apt install rustup
|
||||
rustup default stable
|
||||
rustup update
|
||||
```
|
||||
|
||||
Clone the repo and build:
|
||||
|
||||
```bash
|
||||
sudo useradd route96
|
||||
sudo mkdir -p /usr/share/route96
|
||||
|
||||
git clone https://git.v0l.io/Kieran/route96.git
|
||||
cd route96
|
||||
cargo build -r
|
||||
sudo cp target/release/route96 /usr/sbin/route96
|
||||
```
|
||||
|
||||
## Build UI
|
||||
|
||||
The UI is a react app using yarn:
|
||||
|
||||
Install Node.js if you dont already have it:
|
||||
|
||||
```bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
|
||||
source ~/.nvm/nvm.sh
|
||||
nvm install 22
|
||||
```
|
||||
|
||||
Build the UI and copy the `index.html`
|
||||
|
||||
```bash
|
||||
cd ui_src
|
||||
npx yarn
|
||||
npx yarn build
|
||||
sudo mkdir -p /usr/share/route96/ui/
|
||||
sudo cp dist/index.html /usr/share/route96/ui/index.html
|
||||
```
|
||||
|
||||
## Database setup
|
||||
|
||||
Open mariadb-cli to your local db:
|
||||
|
||||
```bash
|
||||
sudo mariadb
|
||||
```
|
||||
|
||||
Run commands to create user and database:
|
||||
|
||||
```mysql
|
||||
create user 'route96'@'localhost' identified by 'route96';
|
||||
create database route96;
|
||||
grant all privileges on route96.* to 'route96'@'localhost';
|
||||
flush privileges;
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Edit your config file to look something like this:
|
||||
|
||||
```yaml
|
||||
listen: "0.0.0.0:8000"
|
||||
database: "mysql://route96:route96@localhost:3306/route96"
|
||||
storage_dir: "/usr/share/route96/data"
|
||||
max_upload_bytes: 104857600
|
||||
public_url: "http://localhost:8000"
|
||||
```
|
||||
|
||||
## Systemd service
|
||||
|
||||
Copy the config from the cloned repo into a config directory:
|
||||
|
||||
```bash
|
||||
sudo cp route96/config.prod.yaml /usr/share/route96/config.yaml
|
||||
sudo chown -R route96:route96 /usr/share/route96
|
||||
```
|
||||
|
||||
Systemctl config file: `/etc/systemd/system/route96.service`
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=route96
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=route96
|
||||
Group=route96
|
||||
WorkingDirectory=/usr/share/route96
|
||||
Environment="RUST_LOG=info;rocket=error"
|
||||
ExecStart=/usr/sbin/route96
|
||||
|
||||
[Install]
|
||||
WantedBy=network.target
|
||||
```
|
||||
|
||||
Start the service
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now route96
|
||||
```
|
||||
|
||||
In this setup route96 will be listening on `0.0.0.0:8000`, you can modify the `listen`
|
||||
config to listen on `port 80` if you don't already have a webserver running, otherwise you can add the
|
||||
following `nginx` config to proxy requests.
|
||||
|
||||
## Nginx Reverse Proxy
|
||||
|
||||
```bash
|
||||
sudo apt install nginx
|
||||
```
|
||||
|
||||
Add site config: `/etc/nginx/sites-enabled/route96.conf`
|
||||
|
||||
```
|
||||
server {
|
||||
server_name image.example.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8000;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
client_max_body_size 5g;
|
||||
proxy_read_timeout 600;
|
||||
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user