Wafrn is an open source social network that connects with the Fediverse. The frontend is Tumblr-inspired.
The "main" wafrn app is located at app.wafrn.net.
Wafrn is split between an Angular frontend and a NodeJS backend.
packages/
├── frontend/
│ ├── routes/
│ ├── util/
│ ├── README.md
│ └── ...
└── backend/
├── src/
│ ├── app/
│ ├── assets/
│ └── ...
├── README.md
└── ...
(Tree made with tree.nathanfriend.io)
If you're unhappy with my moderation style or you would like to host your own stuff, you can host your own version.
Before trying to host your own wafrn, we advise you to please, very please, join our discord channel to get support
You can either use the installer to get wafrn running, or follow the manual steps.
First, you will need a Debian 12 VPS. The cheap Contabo one can do the trick with no problem. Maybe even the OVH one that costs 3 euros too. But I advise as a minimum the Contabo one. You also need a domain name. You will also need a way of sending emails to the people registering. An SMTP server or a free Brevo account with SMTP enabled can do the trick.
First, point the domain to your Debian VPS. Once that is done, we download the installer and execute it.
The installer will ask a few questions, then install docker and set up the application. It will be installed for the current logged in user.
DO NOT PRESS ENTER BLINDLY DURING THE INSTALL PROCESS, as it will ask some stuff and my bash-fu is not that good
wget https://raw.githubusercontent.com/gabboman/wafrn/main/install/installer.sh
bash installer.sh
Once this has been run successfully you should be able to login to your website using the credentials displayed. If you lost the values you can find them in the ~/wafrn/.env
file.
Note: due to the installer installing new user groups in the system and setting up some temporary environment variables it is highly advised to log out and log back in to avoid potential issues with your groups and environments.
If you don't wish to run a random bash script obtained from the internet, you can also install wafrn manually.
Pre-requisites: A linux based system with bash, git, build essentials and docker pre-installed.
You'll need to get the project files ready in a directory of your choice:
git clone [email protected]:gabboman/wafrn.git
cd wafrn
There is a convenience script that will generate secret values appropriately. To run type
bash install/env_secret_setup.sh
Next you'll need to fill in all of the details of your domain. For example if you're trying to run your website under wafrn.example.com
(and your DNS is already pointing to the computer running docker) you'll need to update the following details:
DOMAIN_NAME=wafrn.example.com
CACHE_DOMAIN=wafrn.example.com
MEDIA_DOMAIN=wafrn.example.com
PDS_DOMAIN_NAME=bsky.example.com
[email protected]
Note: even if you don't intend to run the Bluesky integration you'll need to set a PDS_DOMAIN_NAME
that is different to the main domain you use. You can however make this a fake one, like bsky.example.com
. If you don't intend to use Bluesky then it is also advised that you comment out the pds
and pds_worker
containers in your docker-compose.yml
for security and performance reasons.
You'll also need to fill in the SMTP
settings for emails to work.
Next to run the setup just call
docker compose build && docker compose up
Once the scripts run and everything is okay you should be able to access your website at https://wafrn.example.com
Go to your wafrn
directory and enter:
git pull origin main
docker compose up --build -d
To enable the BlueSky integration follow the steps below:
-
Make sure to have
ENABLE_BSKY=false
for now, as the system will break otherwise -
Create a new domain for your Bluesky service. For example we'll use
bsky.example.com
-
Make sure in your DNS host both
bsky.example.com
and*.bsky.example.com
points to the computer you're running docker compose -
Run
docker compose up
to make sure everything is running -
Run
./install/bsky/create-admin.sh
. This will create a user that the agent will use later and assign it to the admin account. If you use your admin account as your main (like on a single-user instance), then you can also provide a username to be generated (default iswafrnadmin
), e.g../install/bsky/create-admin.sh myuser
. Make sure the username you chose is not one of the reserved names that cannot be used: https://github.com/bluesky-social/atproto/blob/main/packages/pds/src/handle/reserved.ts -
If the previous call was successful now you can enable
ENABLE_BSKY=true
in your config -
Update and restart your system:
docker compose up --build -d
-
Check if everything is still running
-
Use
./install/bsky/add-insert-code.sh
to add a new bluesky insert code to your system. You'll need to have one for any account you wish to enable bluesky for. -
Open up your selected account profile and click "Enable bluesky". If all goes well, this account will now be enabled and accessible on Bluesky. Do note that some names are reserved under Bluesky and you won't be able to create an account for them, even on a personal server. For the full list of reserved names please see https://github.com/bluesky-social/atproto/blob/main/packages/pds/src/handle/reserved.ts
If you would like to help develop the Frontend or Backend, read the README.md of the respective package.
The frontend uses Apache License 2.0.
The backend uses GNU AGPLv3