snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

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/