- Shell 100%
| config/nginx | ||
| docker | ||
| gpg | ||
| podman | ||
| proxy | ||
| scripts | ||
| .env.example | ||
| .env.full.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| LICENSE | ||
| README.md | ||
| run | ||
Spasm forum docker/podman deployment
Mirrors: Forgejo Codeberg Github
Launch Spasm under three minutes.
The entire stack runs in isolated containers without exposing ports, routing traffic through a proxy container. Frontend and db stay on an internal network, backend uses external ones for federation. It's secure, self-contained, and easy to deploy. You can also verify GPG signatures of all git commits.
This repo is for deploying Spasm on existing servers along with other software. For a new server, dedicated for Spasm, use spasm-ansible repo (video) to automate everything from system hardening to deployment with just one script.
Prerequisites
Docker or Podman. Docker is easy, Podman is more secure, but requires extra setup to auto-restart.
Installation
# get the deploy repo
git clone https://github.com/spasm-network/spasm-docker spasm-docker/
cd spasm-docker/
# set ADMINS and POSTGRES_PASSWORD in .env
cp .env.example .env
nano .env
# start the app
docker compose up -d
The app listens on port 33333 by default (you can change HOST_PORT in spasm-docker/.env file).
You can verify the app is running with curl http://127.0.0.1:33333/api/health
Make your forum public
Prerequisites: DNS points to this server IP and firewall allows ports 80 and 443.
Automatic setup
# configure nginx, obtain SSL cert, add auto-renewal
sudo bash run setup your-domain.com 33333
Manual setup
- Route port 80 to 33333 to make forum accessible by IP.
- Get SSL cert and route 443 to 33333 to make forum accessible by domain.
See detailed nginx setup instructions
Customize forum
Open web admin panel at http://<your-ip-address>/admin or https://your-domain.com/admin, connect your extension with admin keys and customize your forum.
Update forum
Note: the run script automatically detects whether Docker or Podman is installed and uses it.
# automatic: pull code, fetch images, restart containers
bash run update
# or manual:
git pull --ff-only
docker compose pull && docker compose up -d --force-recreate
Database management
# backup database (saves .gz into backups/ folder)
bash run db-backup
# restore database (supports .sql and .gz, restarts containers)
bash run db-restore backups/spasm-docker_spasm_database_20260101.sql.gz