Federated, ActivityPub-compatible social network with friends, walls, and groups.
If you have any questions or feedback, there's a Telegram chat you can join.
mvn package -DskipTests=true
and place the one with dependencies at /opt/smithereen/smithereen.jar
java LibVipsDownloader.java
to automatically download a prebuilt one from here. If you already have libvips installed on your system, you may skip this step, but be aware that not all libvips builds include all the features Smithereen needs.mysql -p smithereen < schema.sql
) or any GUI like phpMyAdminsystemctl daemon-reload
and service smithereen start
java -jar /opt/smithereen/smithereen.jar /etc/smithereen/config.properties init_admin
to create the first accountCopy Docker-specific config example to the project root directory as config.properties
and edit it to set your domain. Also edit docker-compose.yml
to add your imgproxy secrets. You can then use docker-compose
to run Smithereen, MySQL, and imgproxy. You still need to configure your web server to reverse proxy the port 4567. Create the first account by running docker-compose exec web bash -c ./smithereen-init-admin
.
Smithereen supports S3-compatible object storage for user-uploaded media files (but not media file cache for files downloaded from other servers).
To enable S3 storage, set upload.backend=s3
in your config.properties
. Configure other properties depending on your cloud provider:
upload.s3.region
: the region to use, us-east-1
by default. Required for AWS, but some other cloud providers accept arbitrary values here.upload.s3.endpoint
: the S3 endpoint, s3.<region>.amazonaws.com
by default. Required if not using AWS.upload.s3.key_id
and upload.s3.secret_key
: your credentials for request authentication.upload.s3.bucket
: the name of your bucket.upload.s3.override_path_style
: if upload.s3.endpoint
is set, set this to true
if your cloud provider requires
putting the bucket name into the hostname instead of in the path for API requests, like <bucket>.<endpoint>
.upload.s3.protocol
: https
by default, can be set to http
.The following properties control the public URLs for clients to read the files from your S3 bucket. They're currently only used for imgproxy, but will be given out to clients directly when support for non-image (e.g. video) attachments arrives in a future Smithereen version:
upload.s3.hostname
: defaults to s3-<region>.amazonaws.com
. Needs to be set if not using AWS and upload.s3.alias_host
is not set.upload.s3.alias_host
: can be used instead of upload.s3.hostname
if you don't want your bucket name to be visible. Requires that you have a CDN or a reverse proxy in front of the storage provider.
<protocol>://<alias_host>/<object>
.<protocol>://<hostname>/<bucket>/<object>
.You will need to configure your bucket to allow anonymous read access to objects, but not allow directory listing. Refer to Mastodon documentation on how to do this on different cloud providers.
You will also need to configure imgproxy to allow it to access your S3 storage:
IMGPROXY_ALLOWED_SOURCES=local://,https://<your S3 hostname or alias host>/
Make sure to include a trailing slash in the URL.
If you would like to help translate Smithereen into your language, please do so on Crowdin.
Smithereen supports various features not found in most other ActivityPub server software. See the federation document if you would like to implement these ActivityPub extensions in your project.