Post

Hammer

This installs the self-hosted sync server for Hammer, the offline-first story/novel writing app. The Kotlin/Ktor server lets you sync your Hammer projects across your own devices instead of using Dropbox or a third-party service. It ships with an in-process (embedded) PostgreSQL, so no external database is required. The server has no UI of its own - install the Hammer desktop/mobile client separately and point it at this server.

Hammer
In Development
This script is currently in active development and may be unstable or incomplete. Use in production environments is not recommended.

Installation

Default install:

1
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/hammer.sh)"
CPU: 2 cores RAM: 2048 MB Disk: 8 GB OS: Debian 13

Configuration

Config file:

1
/opt/hammer_data/config.toml

Notes

This is the SYNC SERVER only, not the Hammer editor. Install the Hammer client (desktop/mobile) separately and create your account from there - the first account created becomes the admin account. http://[IP]:8080 serves the public web pages (/setup, /admin); /api is the sync endpoint and returns an error in a browser because it requires the client's protocol-version header.
Hammer clients only speak https and will NOT connect to plain HTTP, so the default http://[IP]:8080 works in a browser but not from the app. Put a TLS reverse proxy in front of it, or give Hammer a real certificate via sslPort/[sslCert] in /opt/hammer_data/config.toml. Self-signed certificates are rejected by the clients.
Sync data is stored in an embedded PostgreSQL under /opt/hammer_data (kept outside the app directory so it survives updates). Include /opt/hammer_data in regular backups.
Settings live in /opt/hammer_data/config.toml, which the server auto-loads from its data directory. It ships pre-filled with the container IP plus commented examples for reverse proxy, TLS, external PostgreSQL and caching. Apply changes with 'systemctl restart hammer'.

Web Interface

Port: 8080

Source code
Loading...