README.md (5397B)
1 # snac 2 3 A simple, minimalistic ActivityPub instance 4 5 ## Features 6 7 - Lightweight, minimal dependencies 8 - Extensive support of ActivityPub operations, e.g. write public notes, follow users, be followed, reply to the notes of others, admire wonderful content (like or boost), write private messages... 9 - Multiuser 10 - Mastodon API support, so Mastodon-compatible apps can be used 11 - Simple but effective web interface 12 - Easily-accessed MUTE button to silence morons 13 - Tested interoperability with related software 14 - No database needed 15 - Totally JavaScript-free 16 - No cookies either 17 - Not much bullshit 18 19 ## About 20 21 This program runs as a daemon (proxied by a TLS-enabled real httpd server) and provides the basic services for a Fediverse / ActivityPub instance (sharing messages and stuff from/to other systems like Mastodon, Pleroma, Friendica, etc.). 22 23 This is not the manual; man pages `snac(1)` (user manual), `snac(5)` (formats) and `snac(8)` (administrator manual) are what you are looking for. 24 25 `snac` stands for Social Networks Are Crap. 26 27 ## Building and installation 28 29 This program is written in highly portable C. It uses the `__attribute__((__cleanup__))` GNU extension, that is supported at least by the `gcc`, `clang` and `tcc` C compilers. The only external dependencies are `openssl` and `curl`. 30 31 On Debian/Ubuntu, you can satisfy these requirements by running 32 33 ```sh 34 apt install libssl-dev libcurl4-openssl-dev 35 ``` 36 37 On OpenBSD you just need to install `curl`: 38 39 ```sh 40 pkg_add curl 41 ``` 42 43 On FreeBSD, to install `curl` just type: 44 45 ```sh 46 pkg install curl 47 ``` 48 49 On NetBSD, to install `curl` just type: 50 51 ```sh 52 pkgin install curl 53 ``` 54 55 The source code is available [here](https://comam.es/what-is-snac). 56 57 Run `make` and then `make install` as root. 58 59 If you're compiling on NetBSD, you should use the specific provided Makefile and run `make -f Makefile.NetBSD` and then `make -f Makefile.NetBSD install` as root. 60 61 From version 2.27, `snac` includes support for the Mastodon API; if you are not interested on it, you can compile it out by running 62 63 ```sh 64 make CFLAGS=-DNO_MASTODON_API 65 ``` 66 67 If your compilation process complains about undefined references to `shm_open()` and `shm_unlink()` (it happens, for example, on Ubuntu 20.04.6 LTS), run it as: 68 69 ```sh 70 make LDFLAGS=-lrt 71 ``` 72 73 If it still gives compilation errors (because your system does not implement the shared memory functions), you can fix it with 74 75 ```sh 76 make CFLAGS=-DWITHOUT_SHM 77 ``` 78 79 From version 2.68, Linux Landlock sandboxing is included (not supported on Linux kernels older than 5.13.0). It's still a bit experimental, so you must compile it in explicitly with 80 81 ```sh 82 make CFLAGS=-DWITH_LINUX_SANDBOX 83 ``` 84 85 From version 2.73, the language of the web UI can be configured; the `po/` source subdirectory includes a set of translation files, one per language. After initializing your instance, copy whatever language file you want to use to the `lang/` subdirectory of the base directory. 86 87 See the administrator manual on how to proceed from here. 88 89 ## Testing via Docker 90 91 A `docker-compose` file is provided for development and testing. To start snac with an nginx HTTPS frontend, run: 92 93 ```sh 94 docker-compose build && docker-compose up 95 ``` 96 97 This will: 98 99 - Start snac, storing data in `data/` 100 - Configure snac to listen on port 8001 with a server name of `localhost` (see `examples/docker-entrypoint.sh`) 101 - Create a new user `testuser` and print the user's generated password on the console (see `examples/docker-entrypoint.sh`) 102 - Start nginx to handle HTTPS, using the certificate pair from `nginx-alpine-ssl/nginx-selfsigned.*` (see `examples/nginx-alpine-ssl/entrypoint.sh`) 103 104 ## Links of Interest 105 106 - [Online snac manuals (user, administrator and data formats)](https://comam.es/snac-doc/). 107 - [How to run your own ActivityPub server on OpenBSD via snac (by Jordan Reger)](https://man.sr.ht/~jordanreger/activitypub-server-on-openbsd/). 108 - [How to install & run your own ActivityPub server on FreeBSD using snac, nginx, lets'encrypt (by gyptazy)](https://gyptazy.com/blog/install-snac2-on-freebsd-an-activitypub-instance-for-the-fediverse/). 109 - [How to install snac on OpenBSD without relayd (by @antics@mastodon.nu)](https://chai.guru/pub/openbsd/snac.html). 110 - [Setting up Snac in OpenBSD (by Yonle)](https://wiki.ircnow.org/index.php?n=Openbsd.Snac). 111 - [How to run your own social network with snac (by Giacomo Tesio)](https://encrypted.tesio.it/2024/12/18/how-to-run-your-own-social-network.html). Includes information on how to run snac as a CGI. 112 - [Improving snac Performance with Nginx Proxy Cache (by Stefano Marinelli)](https://it-notes.dragas.net/2025/01/29/improving-snac-performance-with-nginx-proxy-cache/). 113 - [Caching Snac Proxied Media With Nginx (by Stefano Marinelli)](https://it-notes.dragas.net/2025/02/08/caching-snac-proxied-media-with-nginx/). 114 115 ## Incredibly awesome CSS themes for snac 116 117 - [A compilation of themes for snac (by Ворон)](https://codeberg.org/voron/snac-style). 118 - [A cool, elegant theme (by Haijo7)](https://codeberg.org/Haijo7/snac-custom-css). 119 - [A terminal-like theme (by Tetra)](https://codeberg.org/ERROR404NULLNOTFOUND/snac-terminal-theme). 120 121 ## License 122 123 See the LICENSE file for details. 124 125 ## Author 126 127 grunfink [@grunfink@comam.es](https://comam.es/snac/grunfink) with the help of others. 128 129 Buy grunfink a coffee: https://ko-fi.com/grunfink/ 130 131 Contribute via LiberaPay: https://liberapay.com/grunfink/