A small list of selfhost-able services and technologies


Worth your liberty, knowledge

I am a strong believer on freedom, controlling your personal data and having the flexibility to learn, experiment and do thing your own way. For this reason, I think that libre (read Open Source) projects that anybody can self-host are one of the most important and useful tools available at our disposal. Therefore, here is a small, limited and very much Work-In-Progress selection of tools. And to be fair, I should really redo it at some point, as I have gained a bit more knowledge since I started it…

List of programs and services

A more complete list, which may be less comprehensible can be found at Awesome-selfhosted. Specially take a look at the hosting section and Streisand, which have a collection of systems/platforms that will make your life easier and some can be used without any experience. Also, make sure to give Awesome-sysadmin a good look.

It is also noting that most of these programs/systems were chosen because they run in not just Linux (GNU/Linux). Since the point of this list is to present solutions that respect the users choices, it made no sense to add software that can only be run in a small selection of systems1.

And of course, please, make sure that you know how to run and administrate a server before you go full into these services. Specially in terms of security and data protection. No one is an expert when they get started in this world, but some basic knowledge is requred.

Blogging/Static site generation

  • Orgmode: Emacs’ org-mode package with org-publish allows you to create projects (websites) with .org files. It is the system that this webpage currently uses.
  • Blogit: minimalist website generator driven by a simple Makefile.
  • Hugo: powerful and simple static site generator.

Social media

  • Matrix: is an open network for decentralized communities. Some server implementations are Dendrite, written in Go and Synapse, written in Python. There are applications for Android, iOS, desktop, browsers and plugins for other clients. Most notably the Element client (Web, Android, iOS), Fluffychat (Web, Android, iOS) and Syphon (Android, iOS). It also has bridges to connect to other networks/protocols, such as IRC and Telegram.
  • XMPP: is an open protocol for messaging and communications. Ejabberd is an XMPP implementation in Erlang.
  • See IRC.
  • Mattermost: is a collaborative platform, an alternative to Slack. It supports bridges to other networks/protocols.
  • Peertube[]{#Peertube}: federated alternative to Youtube, Vimeo, etc.
  • Mobilizon: federated event/group meeting platform.
  • Pleroma: federated alternative to Twitter, just like Mastodon, but written in Elixir using the Phoenix framework.
  • Pixelfed: federated alternative to Instagram.
  • Friendica and Hubzilla are decentralised Facebook alternatives written in PHP.

Code

  • Fossil: a better git. It is not just a VCS, it is a project management system. Written in C.
  • Sourcehut: complete and minimalist git and mercurial development platform. Written mostly in Python.
  • Gitea: modern, complete and fully featured Git hosting platform written in Go.
  • Cgit: ligthweight frontend for git, written in C. May be worth giving Gitolite a look.
  • GNU’s Savannah: old, but supports CVS, mercurial, Subversion, Git, mailing lists among other tools. Written in PHP. A Python alternative would be Kallithea.

CI/CD

Conferencing/Video chats

  • Jitsi: wonderful video/chatting system.
  • Mumble: small and efficient audio chatting server/application.
  • BigBlueButton: classroom hosting.
  • Indico: platform created at CERN to host conferences.
  • Pretalx: another conferencing tool.

Bookmarks/Archive

  • Memex: browser addon to search for information inside the bookmarked pages.
  • Floccus: addon for web-browsers that allows syncing your bookmarks with any WebDAV server, Nextcloud and others.
  • Shiori: simple bookmark manager, alternative to Pocket. It has a web-extension addon and the server is written in Go.
  • ArchiveBox: web archiving platform. It can be used as a bookmark manager. Written in Python.
  • buku: lightweight bookmark manager that can be used locally or as a server. Written in Python.
  • Reminiscense: bookmark manager that can also archive the contents. Written in Python.
  • Unmark: selfhosted bookmark management. Written in PHP.

Email

Mailing lists

  • GNU Mailman: very widely known and used ML software. Written in Pyhton.
  • Sympa: complete and powerful mailing list software. Written in Perl.
  • Majordomo: is a simple mailing list manager written in Perl.
  • phpList: ML that is meant to be more closely controlled by the administrator (there are no ML discussions in the traditioal sense). Written in PHP.

Self hosting

  • TODO
  1. Prebuilt platforms

Contacts/Calendar

Streaming/Media sharing

Networks

Anonymizing systems

  • GNUNet: decentralized anonymous network.
  • I2P: decentralized P2P network.
  • Tor: the onion router.
  • IPFS: the InterPlanetary FS. It is meant to make the data of the “internet” redundant and eternal.

IRC[]{#IRC}

Alternative networks

  • Gopher
  • Gemini: alternative network in the same spirit a Gopher.

Search engines

  • Searx: meta-search engine.

VPNs

Cloud/Storage/Backups

  • TrueNAS: absolute beast of a system.
  • Nextcloud: complete cloud hosting solution. From calendar, to email reader, to document creation, meetings, etc.
  • Samba: SMB server.
  • Syncthing: file synchronization service.
  • Restic: backup system.
  • Storj: decentralized S3-compatible bucket storage.

Financing/Paymet/Patreon

  • Not selfhosted! Liberapay is a libre alternative to the likes of Patreon or Ko.fi.

Project management

Business management/ERP/CRM

  • Dolibarr: old but ever improving ERP, written in PHP.
  • ERPNex: fresh ERP system written in Python.
  • Tryton: complete ERP system written in Python. More prepared for European countries than ERPNext.
  • SuitCRM: a nice CRM.

Databases

  • SQLite: simple, minimal and basic SQL database. Not recommended when having multiple writters or reader-writter. However, one could use rqlite for database replication and management.
  • PostgreSQL: advance RDBMS SQL database.
  • MariaDB: an alternative to MySQL comparable to PostgreSQL.

NoSQL

  • Redis: simple key-value memory storage solution.
  • etcd: another key-value distributed storage solution, written in Go.
  • CouchDB: document DB.
  • RethinkDB: document DB.
  • InfluxDB: time series DB.

Metrics

  • Prometheus: metrics monitoring platform and time series DB.
  • Graphana: monitoring and observability platform, uses InfluxDB.

General utillities

Footnotes

Footnotes

  1. Though Windows and OSX/Mac OS were not considered. Yes, call this hypocrisy.