Caeborg is an all-in-one homepage that includes different tools for my day-to-day. The idea behind it is that I can unify the most popular tools I use into one environment.

- Optimize frontend HTML CSS & JS
- Fix
shell.ts(pretty much broken) - Store translate prefs on server-side
- Fix
- New features:
- Chat features:
- image preview, confirm image sending
- message menu, reply to message, delete, etc
- chat history search
- gifs & videos
- Write Notes tool
- Write Paint tool
- deofhet
- weather
- ascii
- meme
- Chat features:
- To run the web server, run
go run main.goincaeborg-web/. - To run the server in its dev mode, run
go run main.go devincaeborg-web/.devincludes SCSS and TypeScript compilation. - To compile SCSS to CSS separately, run
sass --watch ./client/public/styles:./client/public/.cssincaeborg-web/.
- Clone the repository into ${webroot}. A home directory, or something like
/var/wwwis recommended. My server uses has its webroot at/var/www/caeborg.com
[Unit]
Description=Caeborg
Requires=network.target
After=network.target systemd-ask-password-console.service multi-user.target
[Service]
User=root
WorkingDirectory=${webroot}
ExecStart=/usr/bin/sudo ${webroot}/releases/caeborg_linux_arm64
ExecReload=/usr/bin/sudo ${webroot}/releases/caeborg_linux_arm64
Type=simple
Restart=always
TimeoutSec=360
[Install]
WantedBy=default.target
- Copy the example systemd service file to the systemd services folder
/usr/lib/systemd/system/caeborg.serviceas root. - Enable the service with
systemctl enable --now caeborg. - Don't forget to
chmod +x ./releases/*andchmod +x ./server/besticon/*to avoid permission errors. - To setup SSL and HTTPS, install
certbotand runcertbot certonly --webroot -w ${webroot}/client/public -d caeborg.com
For your development environment to work correctly, you need to set up HTTPS keys. These are self-signed keys intended only for development use.
- Create a private key
openssl genrsa -out ./assets/credentials/privkey.pem 4096. - To create the self-signed SSL key, run
openssl req -x509 -newkey rsa:4096 -keyout ./assets/credentials/privkey.pem -out ./assets/credentials/fullchain.pem -sha256 -days 365. - Then remove the passcode
openssl rsa -in ./assets/credentials/privkey.pem -out ./assets/credentials/privkey.pem -passin pass:1234. - These keys are saved in
caeborg-web/assets/credentialsduring development.- The required keys are
cert.pemandkey.pemfor HTTPS. - An
auth_secretfile is also necessary for encryption.
- The required keys are
- The server also requires an
assets/chat.jsonand anassets/user.jsonfile.- Example of
users.json:
{ "johnappleseed": { "launcher": { "YouTube": "youtube.com" }, "password": "X3xikhbQf87bK0k=", "userSettings": { "colorScheme": "Catppuccin Dark", "userFont": "JetBrains Mono" }, "whitelist": { "a2eb9c82-071d-4b0a-a645-1c48273d6477": 1705572938 } } } - Example of
go(v1.21)dart-sassornode-sassis required for SCSS transpilation.typesecriptandtsc-watchis requried for TypeScript transpilation.