# Deployment (Kamal) We deploy with Kamal. You do NOT need to manually set up web servers or Docker on the VM. `kamal setup` provisions everything. ## Requirements ### Local machine - Ruby + Bundler - Docker (for building images) - SSH key access to the VM - Registry credentials (see `config/deploy.yml`) ### Remote VM - Bare VM with SSH access - Open ports: 22, 80, 443 - A domain name pointing at the VM (for SSL) ## Configure Update `config/deploy.yml`: ```yaml service: sanasto-wiki image: your-registry/sanasto-wiki servers: web: - your-server-ip proxy: ssl: true host: sanasto.example.com registry: server: ghcr.io username: your-github-username ssh: user: deploy ``` Set the registry password: ```bash export KAMAL_REGISTRY_PASSWORD="your-token" ``` Make sure `config/master.key` is present locally. ## First deploy ```bash bundle exec kamal setup ``` ## Regular deploys ```bash bundle exec kamal deploy ``` ## Useful commands ```bash bundle exec kamal app logs --follow bundle exec kamal app details bundle exec kamal app exec --interactive --reuse "bin/rails console" bundle exec kamal rollback ``` ## Initial app setup Visit `https://your-domain/setup` once after the first deploy to create the admin account.