Installation
Main Server
You can either build the application from source or use a prebuilt binary (only linux x64).
Build from Source
At least version 1.85 of cargo is required. Try using rustup instead of your distributions packages if you're running into issues.
- You will need to have rustc, openssl, pkg-config, cargo and npm installed & in your path
- Clone the repository:
git clone https://github.com/Verfassungsblog/PublishGoods . - Install typescript requirements:
npm install -g handlebars typescript@5.9.3 webpack webpack-cli - cd into typescript & run:
cd typescript && npm install - Build with cargo:
cd ../ && cargo build --release - Run with
cargo runor withtarget/release/PublishGoods
Use a prebuilt binary
- Download the latest release from GitHub
- extract the archive:
tar -xf verfassungsbooks-bundled.tar.gz - Run with
./PublishGoods(or create a systemd service)
Adjust Configuration
You can adjust the binding address & port in the Rocket.toml.
You will always need to generate a secret_key. Furthermore, you may use this one-liner:
sed -i "s|secret_key *= *\"\"|secret_key= \"$(openssl rand -base64 32)\"|" Rocket.toml
All other configuration options are located in the config folder.
Add mtls certificates
Example Systemd Service File
To register the server as a systemd service with autostart and running in the background you may use this service file (save as /etc/systemd/system/publishgoods-server.service)
[Unit]
Description=Publishgoods Server
After=network.target
[Service]
WorkingDirectory=/home/verfassungsbooks/verfassungsbooks-server
# or ExecStart=/home/verfassungsbooks/verfassungsbooks-server/target/release/Verfassungsbooks when building from source
ExecStart=/home/verfassungsbooks/verfassungsbooks-server/Verfassungsbooks
Restart=always
User=verfassungsbooks
[Install]
WantedBy=multi-user.target
You will need to create a user verfassungsbooks (or change the username in the service file) and change the WorkingDirectory to the directory your installation files lye in. Then adjust the ExecStart so it points to the executable (Verfassungsbooks or target/release/Verfassungsbooks).
Make sure that the user running the server has write permissions in the data directory!
Now you can start the server with systemctl start publishgoods-server. Logs are redirected to your journal (use journalctl -xe).
Rendering Server
Requirements
For weasyprint you will need to install these requirements:
Ubuntu:
apt install python3-pip libpango-1.0-0 libharfbuzz0b libpangoft2-1.0-0 libharfbuzz-subset0
Keine Kommentare vorhanden
Keine Kommentare vorhanden