Skip to content
rply.shDocs

Docker and any server

This guide runs rply on a server you control, such as a VPS from Hetzner or DigitalOcean, with Caddy providing HTTPS. You need Docker, a domain pointing at the server, and ports 80 and 443 open.

Terminal window
git clone https://github.com/joshuaKnauber/rply
cd rply
docker build -t rply .
Terminal window
docker run -d --name rply --restart always \
-p 127.0.0.1:8080:8080 \
-v rply-data:/data \
-e RPLY_URL=https://rply.example.com \
rply
  • -v rply-data:/data keeps the database and files in a Docker volume across restarts and upgrades.
  • Binding to 127.0.0.1 keeps the plain-HTTP port private; Caddy serves the public side.

Check it’s up:

Terminal window
curl http://localhost:8080/health
{"ok":true}

Install Caddy, then run:

Terminal window
caddy reverse-proxy --from rply.example.com --to localhost:8080

For a permanent setup, put this in /etc/caddy/Caddyfile and reload Caddy:

Caddyfile
rply.example.com {
reverse_proxy localhost:8080
}

Caddy gets a certificate automatically. Open https://rply.example.com and create the first account.

The same setup as a Compose file, including Caddy:

compose.yaml
services:
rply:
build: https://github.com/joshuaKnauber/rply.git
restart: always
environment:
RPLY_URL: https://rply.example.com
volumes:
- rply-data:/data
caddy:
image: caddy:2
restart: always
ports:
- "80:80"
- "443:443"
command: caddy reverse-proxy --from rply.example.com --to rply:8080
volumes:
- caddy-data:/data
volumes:
rply-data:
caddy-data:
Terminal window
docker compose up -d

To try rply on your laptop, skip Caddy and open http://localhost:8080:

Terminal window
docker run -d --name rply -p 8080:8080 -v rply-data:/data rply

Only your computer can reach it, so your phone won’t get notifications. Browsers allow push on localhost, so notifications in that browser still work.