v0.5.0
v0.5.0 [CONTAINS BREAKING CHANGES]
Upgrade caution: Backup your data before upgrading. See Breaking Changes for important notes.
Breaking Changes
- Port changed from 80 to 3005. The monolithic Docker container no longer runs nginx. Go Fiber serves both the API and static frontend files directly on port 3005. Update any custom docker-compose files from
3005:80to3005:3005. (#116) - Nginx removed from production image. Nginx config files (
nginx-default.conf,nginx-main.conf) deleted. No reverse proxy between client and server. If you relied on the built-in nginx for TLS, auth, or custom routing, you will need to add your own reverse proxy layer. (#116) - Go Fiber v2 → v3 upgrade. Fiber v3 has API changes. If you run the server binary directly (not via Docker), you must use the updated binary — old v0.4.4 binaries are not compatible with new code in the frontend. (#113)
- Go 1.25+ required. Server now requires Go 1.25.0 (was 1.23.2).
- DB dialect lock file. On first startup, the server writes a lock file (
./data/db/.db_dialect) recording whether SQLite or PostgreSQL is in use. Switching dialects after first run requires settingFORCE_DB_DIALECT_CHANGE=trueor deleting the lock file.
What you need to do
- If you are using Docker, change the port mapping to
3005:3005. - If you are building from source, upgrade to Go 1.25+ before building the server binary.
- If you are switching from SQLite to PostgreSQL, follow the migration instructions below. If you are not switching, you can leave your existing database alone — the server will continue to use it.
Features
- PostgreSQL support. Set
DB_DIALECT=postgreswith aDATABASE_URLor individualDB_*environment variables. Seedocker/postgres.docker-compose.ymlfor a reference setup. (#109) - Backup & Import. Full backup/restore system accessible from Settings page. Backup is a ZIP containing
data.json(all records, dialect-agnostic) +uploads/directory. Import performs a wipe-and-replace. Works identically for SQLite and PostgreSQL. - Legacy backup import. Directly import backups from v0.4.4 and earlier. The import endpoint detects old-format
.dbfiles inside backup ZIPs and converts them automatically. (#121) - Configurable request logging. New
LOG_CONSOLE(defaulttrue) andLOG_FILEenvironment variables control logging. Colored output with status, duration, method, path, and client IP. (#117) - Version flag. Run
main --versionormain -vto print the version and exit. - Demo mode improvements. Demo data auto-resets every 10 minutes. Console shows countdown ("Demo reset in X minute(s)"). Demo mode is SQLite-only — warning printed if enabled with PostgreSQL.
- OpenAPI spec updated. Significant rewrite of
server/openapi.yamlwith additional endpoints (backup, import, attach). (#115) - Docker image
0tag. The docker-image workflow now also tags images asfrancislaboratories/homelogger:0.
Bug Fixes
- Tests now pass reliably across SQLite and PostgreSQL by using dialect-aware test helpers. (#112)
- Legacy
associated_idcolumn onsaved_filestable is automatically dropped during migration if present. - Port configuration no longer conflicts between nginx and Go server (single port, single process).
PORTenv var accepts bare port numbers (e.g.PORT=3005), not just:3005. (#122)
Dependency Upgrades
| Dependency | Old | New |
|---|---|---|
| Go | 1.23.2 | 1.25.0 |
| github.com/gofiber/fiber | v2.52.14 | v3.4.0 |
| github.com/jackc/pgx/v5 | v5.6.0 | v5.9.2 |
| github.com/andybalholm/brotli | v1.1.0 | v1.2.2 |
| github.com/klauspost/compress | v1.17.9 | v1.19.0 |
| github.com/valyala/fasthttp | v1.51.0 | v1.72.0 |
| golang.org/x/sys | v0.28.0 | v0.46.0 |
| golang.org/x/text | v0.20.0 | v0.38.0 |
Added: gorm.io/driver/postgres v1.6.0, github.com/jackc/pgpassfile, github.com/jackc/pgservicefile, github.com/jackc/puddle/v2, github.com/gofiber/schema v1.8.0, github.com/gofiber/utils/v2 v2.1.1, golang.org/x/crypto, golang.org/x/net, golang.org/x/sync.
Migrating from SQLite to PostgreSQL
-
Backup your existing data. Open Settings → "Download Backup" to get
homelogger-backup.zip. -
Start a new PostgreSQL instance. Use
docker/postgres.docker-compose.ymlas a reference:services: postgres: image: postgres:15-alpine environment: POSTGRES_USER: homelogger POSTGRES_PASSWORD: ChangeMe POSTGRES_DB: homelogger volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 server: image: francislaboratories/homelogger:latest environment: DB_DIALECT: postgres DATABASE_URL: postgresql://homelogger:ChangeMe@postgres:5432/homelogger?sslmode=disable depends_on: postgres: condition: service_healthy ports: - "3005:3005" volumes: - server_data:/root/data volumes: postgres_data: server_data:
-
Start the server.
-
Import your backup. Open Settings → "Import Backup" → select your ZIP → confirm. All data is imported to PostgreSQL. (#121)
Alternative: manual import via API
curl -X POST -F "backup=@homelogger-backup.zip" http://localhost:3005/api/backup/importIssues with Upgrade or Migration
If you encounter issues with the upgrade or migration, please create an issue on GitHub, or post in the Discussions section under the new version. Provide as much detail as possible. Please do not share any sensitive data (e.g., your backup ZIP) publicly. If you need to share a backup for debugging, the maintainer may provide a secure way to share it privately.
Notes
- Import is destructive — existing data is replaced.
- Keep an extra copy of the backup ZIP before importing.
- Demo mode is SQLite-only; it is automatically disabled when using PostgreSQL.
Full Changelog: 0.4.4...0.5.0