2022-09-26 00:22:12 +03:00
# snac
A simple, minimalistic ActivityPub instance
2023-02-05 13:23:10 +03:00
## Features
2022-09-26 00:22:12 +03:00
2022-10-30 09:10:19 +03:00
- Lightweight, minimal dependencies
- 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...
2022-11-28 20:15:55 +03:00
- Multiuser
2023-08-16 09:55:34 +03:00
- Mastodon API support, so Mastodon-compatible apps can be used
2023-04-12 12:31:49 +03:00
- Simple but effective web interface
2022-09-26 00:22:12 +03:00
- Easily-accessed MUTE button to silence morons
2022-11-13 17:09:28 +03:00
- Tested interoperability with related software
2022-09-26 00:22:12 +03:00
- No database needed
2022-11-13 17:09:28 +03:00
- Totally JavaScript-free
2022-11-16 14:16:30 +03:00
- No cookies either
2022-09-26 00:22:12 +03:00
- Not much bullshit
2023-02-05 13:23:10 +03:00
## About
2022-09-26 00:22:12 +03:00
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.).
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.
`snac` stands for Social Networks Are Crap.
2023-04-22 09:18:36 +03:00
## Building and installation
2022-09-26 00:22:12 +03:00
2023-06-13 22:20:52 +03:00
This program is written in highly portable C. The only external dependencies are `openssl` and `curl` .
2022-09-26 00:22:12 +03:00
On Debian/Ubuntu, you can satisfy these requirements by running
2023-05-13 18:08:30 +03:00
```sh
apt install libssl-dev libcurl4-openssl-dev
2022-09-26 00:22:12 +03:00
```
2023-04-22 09:18:36 +03:00
On OpenBSD you just need to install `curl` :
2022-11-09 08:23:55 +03:00
2023-05-13 18:08:30 +03:00
```sh
pkg_add curl
2022-11-09 08:23:55 +03:00
```
2022-09-26 00:22:12 +03:00
2024-01-03 16:54:23 +03:00
On FreeBSD, to install `curl` just type:
```sh
pkg install curl
```
2024-01-07 20:21:55 +03:00
On NetBSD, to install `curl` just type:
```sh
pkgin install curl
```
2023-08-14 13:32:26 +03:00
The source code is available [here ](https://comam.es/what-is-snac ).
2024-01-07 20:21:55 +03:00
Run `make` and then `make install` as root.
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.
2022-09-26 00:22:12 +03:00
2023-04-22 00:25:31 +03:00
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
2023-05-13 18:08:30 +03:00
```sh
make CFLAGS=-DNO_MASTODON_API
2023-04-22 00:25:31 +03:00
```
2024-01-13 11:12:16 +03:00
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:
2024-01-12 20:06:16 +03:00
```sh
make LDFLAGS=-lrt
```
2024-05-22 10:37:44 +03:00
If it still gives compilation errors (because your system does not implement the shared memory functions), you can fix it with
2024-05-21 19:57:13 +03:00
```sh
make CFLAGS=-DWITHOUT_SHM
```
2022-09-26 00:22:12 +03:00
See the administrator manual on how to proceed from here.
2023-02-05 13:23:10 +03:00
## Testing via Docker
2022-12-12 13:26:38 +03:00
A `docker-compose` file is provided for development and testing. To start snac with an nginx HTTPS frontend, run:
2023-05-13 18:08:30 +03:00
```sh
docker-compose build & & docker-compose up
2023-04-22 00:28:37 +03:00
```
2022-12-12 13:26:38 +03:00
This will:
- Start snac, storing data in `data/`
- Configure snac to listen on port 8001 with a server name of `localhost` (see `examples/docker-entrypoint.sh` )
- Create a new user `testuser` and print the user's generated password on the console (see `examples/docker-entrypoint.sh` )
- Start nginx to handle HTTPS, using the certificate pair from `nginx-alpine-ssl/nginx-selfsigned.*` (see `examples/nginx-alpine-ssl/entrypoint.sh` )
2023-06-25 07:46:29 +03:00
## Links of Interest
2023-06-21 10:12:25 +03:00
2024-02-11 11:04:19 +03:00
- [Online snac manuals (user, administrator and data formats) ](https://comam.es/snac-doc/ ).
- [How to run your own ActivityPub server on OpenBSD via snac (by Jordan Reger) ](https://man.sr.ht/~jordanreger/activitypub-server-on-openbsd/ ).
- [How to install & run your own ActivityPub server on FreeBSD using snac, nginx, lets'encrypt (by gyptazy) ](https://gyptazy.ch/blog/install-snac2-on-freebsd-an-activitypub-instance-for-the-fediverse/ ).
2024-04-07 09:17:46 +03:00
- [How to install snac on OpenBSD without relayd (by @antics@mastodon.nu) ](https://chai.guru/pub/openbsd/snac.html ).
- [Setting up Snac in OpenBSD (by Yonle) ](https://wiki.ircnow.org/index.php?n=Openbsd.Snac ).
2023-06-25 01:03:59 +03:00
2023-06-29 23:36:47 +03:00
## Incredibly awesome CSS themes for snac
2024-04-07 03:51:20 +03:00
- [A compilation of themes for snac (by Ворон) ](https://codeberg.org/voron/snac-style ).
2024-02-11 11:04:19 +03:00
- [A cool, elegant theme (by Haijo7) ](https://codeberg.org/Haijo7/snac-custom-css ).
- [A terminal-like theme (by Tetra) ](https://codeberg.org/ERROR404NULLNOTFOUND/snac-terminal-theme ).
2024-01-24 22:39:07 +03:00
2023-02-05 13:23:10 +03:00
## License
2022-09-26 00:22:12 +03:00
See the LICENSE file for details.
2022-10-30 09:04:13 +03:00
2023-02-05 13:23:10 +03:00
## Author
2022-10-30 09:04:13 +03:00
2023-07-28 12:34:18 +03:00
grunfink [@grunfink@comam.es ](https://comam.es/snac/grunfink ) with the help of others.
2023-04-25 21:56:37 +03:00
Buy grunfink a coffee: https://ko-fi.com/grunfink