Requirements
- A machine with Docker and the Compose plugin. That is the only dependency.
- About 512 MB of RAM is plenty. Disk usage grows with the photos you upload.
Install Docker
You only need Docker itself. Pick your operating system.
Linux
Install Docker with the official script, then allow your user to run it without sudo:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker "$USER"
newgrp docker
Compose ships as docker compose. Check it with docker compose version.
macOS
Install Docker Desktop (Apple Silicon and Intel are both supported), or use Homebrew:
brew install --cask docker
Open Docker Desktop once so the engine starts, then use Terminal for the next steps.
Windows
Install Docker Desktop. It sets up the WSL 2 backend for you. Run the commands from PowerShell, using curl.exe in place of curl.
Start Wayfare
On Linux or macOS (or Windows via WSL), one command sets everything up in a wayfare folder:
curl -fsSL https://wayfare.wiki/install | sh
Wayfare is now at http://localhost:3151. Open it and start a journal.
data/ folder inside wayfare/. Keep that folder and you keep your journals.Prefer to do it by hand, or on Windows PowerShell
mkdir wayfare && cd wayfare
curl -O https://codeberg.org/srtk/wayfare/raw/branch/main/docker-compose.yml
curl -o .env https://codeberg.org/srtk/wayfare/raw/branch/main/.env.example
docker compose up -d
On Windows PowerShell, use curl.exe in place of curl.
Configure
Settings live in the .env file next to docker-compose.yml.
| Variable | Default | What it does |
|---|---|---|
| WAYFARE_PORT | 3151 | Host port the app listens on. |
The data directory is set by the volume mount in docker-compose.yml. Change the left side of ./data:/app/data to store it elsewhere.
Domain and HTTPS
Run a reverse proxy in front of Wayfare to add TLS and serve it on your own domain. Point the proxy at the port above.
Caddy is the shortest path because it gets certificates automatically:
journal.example.com {
reverse_proxy 127.0.0.1:3151
}
With nginx and a certificate from certbot:
server {
listen 443 ssl;
server_name journal.example.com;
ssl_certificate /etc/letsencrypt/live/journal.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/journal.example.com/privkey.pem;
client_max_body_size 30m; # photo uploads
location / {
proxy_pass http://127.0.0.1:3151;
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;
}
}
docker-compose.yml to "127.0.0.1:3151:3151".Backups
Everything lives in data/. To back up, stop the container and copy the folder:
docker compose stop
tar czf wayfare-backup-$(date +%F).tar.gz data
docker compose start
Restore by putting the data/ folder back and running docker compose up -d.
Updating
docker compose pull
docker compose up -d
Your data/ folder is untouched by updates.
Build from source
To build the image yourself instead of pulling it, clone the repository, switch the compose file to build locally, and start it:
git clone https://codeberg.org/srtk/wayfare.git
cd wayfare
# In docker-compose.yml, comment out the image line and uncomment build: .
docker compose up -d --build
Security
- There are no accounts or passwords. Edit access to a trip is a random token kept in the browser that created it. Treat it like a secret.
- Public journals are readable by anyone with the link. Do not put anything private in a journal you make public.
- Terminate TLS at your reverse proxy. Wayfare speaks plain HTTP and expects something in front of it on the public internet.
Questions or issues? The source and issue tracker live on Codeberg.