Multi-Project Setup
Run multiple applications on a single VPS with shared infrastructure. slipp tracks projects globally so you can operate on any project from anywhere.
Project Registry
Section titled “Project Registry”slipp maintains a global registry of projects:
slipp projects listname path registeredmyapp /home/user/projects/myapp 2024-01-15auth-service /home/user/projects/auth-service 2024-01-10landing /home/user/projects/landing 2024-01-05Register a project
Section titled “Register a project”cd /path/to/myprojectslipp projects add myappRemove from registry
Section titled “Remove from registry”slipp projects remove myappProjects are also auto-registered on deploy.
Shared Infrastructure
Section titled “Shared Infrastructure”Single VPS layout
Section titled “Single VPS layout”Directory/home/user/
Directoryprojects/
Directorymyapp/
- slipp.yaml
Directoryinventory/
- …
Directoryauth-service/
- slipp.yaml
Directoryinventory/
- …
Directorylanding/
- slipp.yaml
Directoryinventory/
- …
All projects point to the same VPS in their inventories:
all: hosts: myserver: ansible_host: 192.168.1.100 ansible_user: slippView all services
Section titled “View all services”slipp psShows services across ALL registered projects:
name project host state uptimemyapp myapp myserver running 2dpostgres auth-service myserver running 5dnginx landing myserver running 5dOperations Across Projects
Section titled “Operations Across Projects”Target specific project
Section titled “Target specific project”slipp ps -p auth-serviceslipp logs postgres -p auth-serviceUse host from any directory
Section titled “Use host from any directory”slipp exec "df -h" # Uses current project's hostslipp host myapp --ip # Get IP for specific projectShared secrets
Section titled “Shared secrets”Access vault from another project:
slipp run dev --vault shared-secrets --cmd "npm run dev"Deployment Workflow
Section titled “Deployment Workflow”-
Deploy infrastructure first
Projects like databases should deploy before dependent apps:
Terminal window cd auth-serviceslipp deploy -
Deploy applications
Terminal window cd myappslipp deploycd landingslipp deploy -
Verify all services
Terminal window slipp ps
Tag Presets
Section titled “Tag Presets”Create consistent presets across projects:
tag_presets: install: "--tags install-all" setup: "--tags setup-all --skip-tags start" restart: "--tags restart"Use from any project:
slipp deploy installExample: Full Stack Setup
Section titled “Example: Full Stack Setup”Directoryprojects/
Directoryinfrastructure/
- slipp.yaml
Directoryinventory/
- …
Directoryroles/
Directorypostgres/
- …
Directoryredis/
- …
Directorytraefik/
- …
Directoryapi/
- slipp.yaml
Directoryinventory/
- …
Directoryroles/
Directoryapi/
- …
Directoryfrontend/
- slipp.yaml
Directoryinventory/
- …
Directoryroles/
Directoryfrontend/
- …
Deploy order
Section titled “Deploy order”# 1. Infrastructure (database, cache, proxy)cd infrastructure && slipp deploy
# 2. Backend APIcd api && slipp deploy
# 3. Frontendcd frontend && slipp deployLocal development
Section titled “Local development”# Frontend: tunnel to production, connect to remote APIslipp run dev \ --cmd "npm run dev" \ --tunnel-out 3000:app.example.com@myserver \ --tunnel-in api:8000@myserverConfiguration
Section titled “Configuration”Project config (slipp.yaml)
Section titled “Project config (slipp.yaml)”name: myappinventory: inventory/hostsplaybook: playbook.ymlvault: inventory/host_vars/myserver/vault.ymlGlobal registry
Section titled “Global registry”Located at ~/.config/slipp/projects.json:
{ "projects": [ { "name": "myapp", "project_path": "/home/user/projects/myapp", "registered_at": "2024-01-15T10:30:00Z" } ]}