No description
This repository has been archived on 2026-05-14. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • Go 93.2%
  • JavaScript 3.7%
  • CSS 2.3%
  • Just 0.6%
  • Shell 0.2%
Find a file
2025-03-29 10:27:10 +00:00
.data Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
.vscode Add useful stock config for VSC to repo 2025-01-05 13:12:37 +01:00
back_office feat #62 allow upload of multiple media 2025-03-29 11:20:03 +01:00
commons finish reskin 2025-03-29 11:09:40 +01:00
config bump VERSION to 0.7.1 2025-03-29 11:22:35 +01:00
crons Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
dockerfiles Use gcr.io/distroless/static as the base image due to ca-certificates necessity 2025-02-02 21:17:59 +01:00
exe Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
frontend #95 fix cookie bar 2025-03-29 10:22:38 +01:00
LICENSES Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
migrations add comments to backend 2025-02-02 19:58:15 +01:00
models add comments to backend 2025-02-02 19:58:15 +01:00
repos finish reskin 2025-03-29 11:09:40 +01:00
src finish reskin 2025-03-29 11:09:40 +01:00
static feat #9: OG image generation on the fly 2025-01-06 22:44:10 +01:00
testing extract common test function 2025-02-07 17:33:54 +01:00
.dockerignore Exclude license-related files from built images 2025-01-04 17:38:04 +01:00
.env.development.docker feat #8: rss feeds 2025-01-22 18:03:07 +01:00
.env.development.docker.license Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
.env.test.docker feat #8: rss feeds 2025-01-22 18:03:07 +01:00
.env.test.docker.license Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
.gitignore Add useful stock config for VSC to repo 2025-01-05 13:12:37 +01:00
.gitlab-ci.yml make sure VERSION updates for nightly 2025-02-08 20:10:59 +01:00
.tool-versions Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
check_node_licenses.sh enh #36 Check Node licenses 2025-01-06 19:25:33 +01:00
COPYING License under AGPL-3.0 2025-01-04 16:37:08 +01:00
docker-compose.prod.yml-sample feat #8: rss feeds 2025-01-22 18:03:07 +01:00
docker-compose.test.yml Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
docker-compose.yml feat #53 use watch in compose 2025-03-29 11:22:00 +01:00
go.mod enh #70 mailer refactor + tests 2025-02-03 18:46:53 +01:00
go.sum enh #70 mailer refactor + tests 2025-02-03 18:46:53 +01:00
go.sum.license Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
Justfile finish reskin 2025-03-29 11:09:40 +01:00
module.go Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
package.json Enh #17: Split JS bundles for frontend and backoffice 2025-01-04 16:37:18 +01:00
package.json.license Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
README.md Update README.md - dogfooding instance 2025-03-29 10:27:10 +00:00
README.md.license enh #47: set up a readme 2025-01-10 17:42:03 +01:00
server.go Compliance with REUSE.software 2025-01-04 17:38:02 +01:00
tailwind.config.js fix #43: hide subdocuments link when subdocuments arent present 2025-01-06 19:36:35 +01:00
vellum.conf-sample enh #47: set up a readme 2025-01-10 17:42:03 +01:00
vellum.service-sample enh #47: set up a readme 2025-01-10 17:42:03 +01:00
yarn.lock Figure out the PublishedAt situation (which is now PublishedOn) 2025-01-04 16:37:15 +01:00
yarn.lock.license Compliance with REUSE.software 2025-01-04 17:38:02 +01:00

Vellum

A copyleft, self-hosted, personal wiki. Check out the dogfooding instance.

Features

  • Fast as f*ck
  • Zero tracking, analytics, ads, or other b*llshit 📈
  • Markdown in, HTML/Markdown out 📄
  • Syntax highlighting via chroma 💻
  • MathJax support 📊
  • Mmark support 📄
  • Image upload 📸
  • Single-user, magic-link login 🔑
  • Dynamic, cached image versions 📸
  • RSS feeds 📰
  • Public document search 🔍
  • Comments, spam protection via hCaptcha 💬

Roadmap (in no particular order)

  • Push API 📤
  • Webmentions 🔗

Non-goals

  • Working the way you want it to (it's opinionated, and that's okay)
  • Becoming the next Notion/MediaWiki/Google Docs/Wordpress (it's not in the same niche, and that's okay)
  • Monetization (it's free, and that's okay)

Hosting your own

The supported way to host your own instance is by using Podman Compose.

  • copy and adjust the docker-compose.yml-sample file to your needs
    • VELLUM_HTTP_HOST should be the domain name you want to use for your instance
    • VELLUM_OWNER_EMAIL should be your email address
    • VELLUM_EMAIL_HOST, VELLUM_EMAIL_USER, VELLUM_EMAIL_PASS should be your SMTP server credentials
    • VELLUM_EMAIL_FROM should be the email address you want to use for sending emails from the instance
    • VELLUM_DATABASE_HOST, VELLUM_DATABASE_PORT, VELLUM_DATABASE_NAME, VELLUM_DATABASE_USER, VELLUM_DATABASE_PASS should be your database credentials - if you're using the default postgres image, you can leave them as is
    • VELLUM_STORAGE_PATH should be the path to the directory where you want to store your images
    • VELLUM_FEED_TITLE, VELLUM_FEED_DESCRIPTION, VELLUM_FEED_AUTHOR, VELLUM_FEED_AUTHOR_EMAIL should be the feed metadata
    • VELLUM_HCAPTCHA_SITE_KEY and VELLUM_HCAPTCHA_SECRET_KEY should be your hCaptcha site key and secret key
    • keep in mind that you are in charge of keeping your .data volumes persistent and backed up! if these are lost, your instance is toast.
  • create a systemd service similar to vellum.service-sample in /etc/systemd/system/vellum.service
  • run sudo systemctl daemon-reload, sudo systemctl enable vellum and sudo systemctl start vellum - this will load the service, make it run on boot, and start it now
  • verify that the service is running by running sudo systemctl status vellum
  • you may want to ensure your user has linger enabled - sudo loginctl enable-linger someuser - this will allow the service to keep running even after the user logs out
  • configure your reverse proxy to point to the service (e.g. nginx, caddy, etc) - see vellum.conf-sample for an example nginx configuration with Let's Encrypt support
  • load up your instance and enjoy!

To avoid legality concerns/you having to republish your config files (which would be dumb), sample files are licensed under the MIT license.

License

This software is licensed under the GNU Affero General Public License v3.0. In short:

  • you can use it, modify it, and distribute it, but you must share the source code with your users
  • you will never have to pay for this software
  • you may try to make money from enhancing it and hosting that enhanced version, but you must share your changes publicly (and they will be made available to everyone)

I will not release any code for this software under any other license (aka dual-licensing, re-licensing, etc).

This project complies with REUSE.