Bytebase
Database change management for teams. Plan, review and roll out schema changes to Postgres, MySQL and 20-odd other databases with a full history, or query them from a web SQL editor.
Database / Development
Coding time tracker that works with the WakaTime editor plugins. Point them at your own server and get stats per project, language, editor and machine, plus badges you can put in a README.
It isn't in the main Portainer Templates list yet, so use this one. Portainer takes one URL at a time, so it swaps out whatever list you had before.
In Portainer, head to Settings --> App Templates, paste this in as the URL and save.
https://raw.githubusercontent.com/NotAFlightRisk/portainer-templates-extras/main/templates.json http://<your-server>:3100 in a browser.The same file Portainer deploys. It reads its settings from a .env next to it.
services:
wakapi:
image: ghcr.io/muety/wakapi:2
restart: unless-stopped
init: true
ports:
- "${WAKAPI_PORT:-3100}:3000"
environment:
WAKAPI_PASSWORD_SALT: ${WAKAPI_PASSWORD_SALT:?Set a password salt}
WAKAPI_COOKIE_KEY: ${WAKAPI_COOKIE_KEY:-}
WAKAPI_PUBLIC_URL: ${WAKAPI_PUBLIC_URL:-http://localhost:3100}
WAKAPI_ALLOW_SIGNUP: ${WAKAPI_ALLOW_SIGNUP:-true}
volumes:
- wakapi-data:/data
volumes:
wakapi-data:
Fill in the blanks, as Wakapi won't start without them.
# Password salt (required) - Mixed into every password hash. Generate one with: openssl rand -hex 32. Keep it the same when you redeploy, or nobody can log in.
WAKAPI_PASSWORD_SALT=
# Cookie key - Keeps you logged in when it restarts. Generate one with: openssl rand -base64 32. Leave it blank and every restart logs everyone out.
WAKAPI_COOKIE_KEY=
# Host port for the web UI
WAKAPI_PORT=3100 Grab the file and start it.
mkdir wakapi && cd wakapi
curl -fsSL -o compose.yml https://raw.githubusercontent.com/NotAFlightRisk/portainer-templates-extras/main/apps/wakapi/compose.yml
# save the .env tab here as .env first
docker compose up -d Set the password salt before you deploy (openssl rand -hex 32 makes a good one), since the stack won't start without it, and keep it the same when you redeploy. Then open http://<your-host>:3100 (or whichever port you picked) and sign up. The first account is the admin. Sign-ups stay open, so once you've made yours add WAKAPI_ALLOW_SIGNUP = false to the stack's environment variables and update the stack. The setup page shows the ~/.wakatime.cfg lines for your editor's WakaTime plugin, with your API key. Invite links point at localhost until you add WAKAPI_PUBLIC_URL (like http://192.168.1.10:3100) there too. The logged-out front page loads one badge image from badges.fw-web.space. Everything lives in SQLite, in the wakapi-data volume. Docs: github.com/muety/wakapi
What the Portainer form asks for. With compose they go in the .env file instead.
| Variable | What it's for | Default |
|---|---|---|
WAKAPI_PASSWORD_SALT | Password salt (required) Mixed into every password hash. Generate one with: openssl rand -hex 32. Keep it the same when you redeploy, or nobody can log in. | Needs filling in |
WAKAPI_COOKIE_KEY | Cookie key Keeps you logged in when it restarts. Generate one with: openssl rand -base64 32. Leave it blank and every restart logs everyone out. | Needs filling in |
WAKAPI_PORT | Host port for the web UI | 3100 |
The containers this stack runs, with ports as they come out of the box.
| Service | Image | Ports |
|---|---|---|
wakapi | ghcr.io/muety/wakapi:2 | 3100:3000 |