Manual Install¶
The installer and the strawly command are optional. If you already run Docker with your own reverse proxy, you can use the compose file directly.
1. Get the deployment files¶
git clone https://git.strawly.app/Strawly/deployment.git strawly
cd strawly
cp .env.example .env
chmod 600 .env
2. Fill in .env¶
Set at least these values. Environment Variables describes every one.
| Variable | Value |
|---|---|
STRAWLY_VERSION, OPTIMIZATIONS_AZURE_VERSION |
Versions from versions.json that work together |
COMPOSE_PROFILES |
azure to run the Azure module, none to run without modules |
STRAWLY_PUBLIC_URL |
The address people type, for example https://strawly.example.com |
STRAWLY_HTTP_PORT, STRAWLY_BIND |
Where the instance proxy listens, for example 8080 on 127.0.0.1 |
ADMIN_EMAIL, ADMIN_PASSWORD |
The first admin account |
POSTGRES_PASSWORD, CREDENTIALS_ENCRYPTION_KEY, INTERNAL_API_TOKEN |
openssl rand -hex 32 each |
JWT_SECRET |
openssl rand -hex 48 |
3. Start Strawly¶
Strawly listens on http://<STRAWLY_BIND>:<STRAWLY_HTTP_PORT>. That one port serves both the web interface and the API, so your reverse proxy needs a single upstream.
4. Put your reverse proxy in front¶
Forward your domain to the Strawly port, and pass the X-Forwarded-Proto header so Strawly knows the browser used HTTPS. Strawly marks its login cookie Secure only when that header says https.
An Nginx example:
server {
listen 443 ssl;
server_name strawly.example.com;
# ssl_certificate and ssl_certificate_key as usual
client_max_body_size 0; # backups can be large
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 600s;
}
}
Strawly trusts forwarded headers from private network addresses. If your proxy reaches Strawly from a public address, run it on the same host or network instead.
Upgrading¶
Choose new versions that work together from versions.json, back up, then:
docker compose exec -T postgres sh -c 'pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" -Fc' > backup.dump
# edit STRAWLY_VERSION and OPTIMIZATIONS_AZURE_VERSION in .env
docker compose pull
docker compose up -d
The migrations container updates the database before the new backend starts.