1. Overview
The following tutorial is a complete, detailed and tested set of instructions to install and administer an MOBILIZON social network server [1-6] . MOBILIZON is an open-source, federated, practical, and ethical social network tool to find, create and organize social events. MOBILIZON is based on the ActivityPub protocol, and, therefore, able to interact with other similar federated social networks like MASTODON, FRIENDICA, and others.
MOBILIZON servers provide a non-profit service based on federated, open-source software to support social activities without the limitations of profit-driven services, which may cause considerable costs for event or group organizers or may burden users with unrequested information (eg, ads) or promote unhealthy behaviours (eg, screen addiction).
This tutorial intends to lower the technical barrier for federated social networks to democratize social communication.
Steps:
- Rent Cloud server (with IP address)
- Rent Domain and configure DNS server (forward internet address to IP address)
- Prepare Operating System
- CERTBOT & NGINX web server
- Installation
- Configuration
- MOBILIZON server
- Installation
- Configuration
Note: You can copy & paste the following commands from the website to your Linux terminal. However, it is recommended to use the copy & paste functionality of your Windows Manager GUI (eg, CTRL-C, CTRL-V or context menu activated by right-mouse button) and not the copy & paste functionality of your X-Window system (ie, highlight region and press middle-mouse button), because the (non-printable) characters may not be inserted correctly and may lead to hard-to-interpret error messages.
2. Hardware (Cloud Provider)
I have rented the following cloud server from cloud service provider hetzner.com following the MOBILIZON installation documentation [7, 8] and FAQ [9]:
Configuration of HETZNER server:
- Location: eu-central (Helsinki)
Note: I selected a server in Scandinavia to support trust by Swedish users. - Image: Debian 12
Note: Mobilizon supports Debian 12. - Type: Standard, CX22
Note: AMD x86-64 architecture was selected because docker images exist only for Linux/AMDx86-64 and Linux/ARM64, but PostGIS docker images only for Linux/AMDx86-64, although AMD64 (Ampere) processors seems to be more performant.- 2 virtual CPUs (x86-64 Intel/AMD)
- 4GB Memory
- 40GB Storage
- Networking: IPv4, IPv6
- SSH keys: none
- Volumes: none
- Firewalls: none (define later, see below)
- Backups: yes, for production systems
- Placement group: skip
- Labels: skip
- Cloud config: skip
- Name: mobisrv (or any other name you want)
- Costs around ~5 to 6 EUR/Month
3. Domain (Web Provider)
3.1 Domain
I have rented the domain https://uppsala.social from from namecheap.com. Differences in domain availability and pricing apply and is recommended to compare prices between different provides for your desired domain. Point the domain to the IP address of your cloud server (see section 2).
Figure 1: Configuration of DNS server for main domain uppsala.social (“A” record)
3.2 Email Account
While setting up an SMTP server via POSTFIX may seem trivial, the proper configuration of an email server to make it secure including all security flags is less trivial. If the security flags are not configured properly, it increases the likelihood of emails to users will be categorized as spam and not seen be the users.
Therefore, I recommend using the option of the domain host namecheap.com (see “Private Email”) to create an email account for your admin email address, eg email@uppsala.social for the current domain, whereby you will avoid the difficulties of setting up an email server for little cost, eg 1EUR/month. The email address will be later be needed to configure your MOBILIZON server (see .env file). The configuration details for email clients for the email provider privateemail.com which cooperates which namecheap.com are available here [10, 11, 12].
It is useful to configure an email address with the same domain as the MOILIZON server, eg email@uppsala.social, to create trust in MOBILIZON users when receiving emails, eg for registration. However, if an email address is configured with the same domain as the MOBILIZON user names, there may be conflicts between MOBILIZON user names (eg, admin@uppsala.social) and EMAIL addresses (eg, admin@uppsala.social). In addition, it may be not clear to the users whether a certain address is a MOBILIZON user name or an Email address. Therefore, it is recommended to configure only email addresses, which make it explicitly clear that they are email addresses and not Mobilizon user names, eg email@uppsala.social or email_admin@uppsala.social.
4. Prepare Operating System
After renting and starting your cloud server, you will have to create a 1) root password and 2) login into the server via the VNC terminal on the provider website.
Please note that the keyboard layout on the terminal may be different from your physical keyboard and therefore it it is recommended to copy and paste the root password and only use ASCII letters and numbers (no special characters or umlauts) for passwords in the VNC terminal. One can change the passwords to more complex passwords later.
4.1 Basic
Figure 2: Reset root password
Figure 3: Start the VNC terminal using the “>_” logo (see right side of screenshot or HETZNER menu > Actions > Console) to login in as root
Update the Operating system with the most basic configs and packages:
remote> passwd # re-set root password to a memorable password (optional)
remote> dpkg-reconfigure locales # configure locale of language (choose english "en_US.UTF-8" for easier debugging)
remote> apt update # update package repository
remote> apt upgrade # upgrade packages
remote> apt install sudo # install sudo package
remote> apt install emacs # optional: install "emacs" editor, otherwise use "nano" editor
remote> adduser mobiusr # add user, so you do not have to run as root
remote> sudo usermod -aG sudo mobiusr # add xmppusr to superuser group
remote> exit # exit, user configs will updated with new login
The following instructions (sections 4.3, 4.4, 5) are more advanced, therefore, it is recommended connecting to the server via a more convenient terminal on your local client than the browser-embedded terminal provided by the Hetzner Cloud Console.
local> ssh mobiusr@157.180.41.145
local> ssh mobiusr@uppsala.social # optional: updating the DNS entry may take some time (ie hours)
4.2 Advanced – Firewall
4.2.1 Server (Admin) level
Install Firewall:
remote> sudo apt install ufw
Configure Firewall:
remote> sudo ufw allow ssh #IMPORTANT! Allow ssh connections before starting firewall, otherwise you will be disconnected!
remote> sudo ufw allow 80/tcp; sudo ufw allow 80/udp # http
remote> sudo ufw allow 443/tcp; sudo ufw allow 443/udp # https
remote> sudo ufw enable
Note: Per default the ufw firewall allows outgoing traffic on all ports (eg, sudo ufw status, “from: Anywhere”), so rules are usually only defined for incoming traffic (eg, sudo ufw status, “To: 443/tcp”)
4.2.2 [Optional] Network (Provider) level
Many providers block ports for email (outogoing) traffic, eg port 25, 565, and sometimes even 587, to prevent email spamming. These ports cannot be opened by the admin using ufw on a server level and, therefore, opening these ports to allow the MOBILIZON server to send or receive emails on a network level has to be requested from the technical support of your provider. For example, the following request has to be submitted to provider HETZNER (see Hetzner Cloud > Menu > User Profile Logo > Support > Technical > Subcategory: Server issue sending emails not possible > Click on “Send us a request”).
The email configuration in this tutorial uses TLS encryption via port 587, so the blocked ports are not relevant currently. However, since the provider may decide at any point to also block port 587 by default, users should be aware of this frequent source of error and may request unblocking of required email ports by the cloud provider.
Figure 4: Submit a request to open ports 25 and 465 to send & receive emails at Hetzner
4.3 Advanced – Docker
To install Docker Container services [13]:
# remove old Docker packages, if available
remote> for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
remote> # Add Docker's official GPG key:
remote> sudo apt-get update
remote> sudo apt-get install ca-certificates curl
remote> sudo install -m 0755 -d /etc/apt/keyrings
remote> sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
remote> sudo chmod a+r /etc/apt/keyrings/docker.asc
remote> # Add the repository to Apt sources:
remote> echo \
remote> "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
remote> $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
remote> sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
remote> sudo apt-get update
# Install Docker
remote> sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Check
remote> sudo docker run hello-world
# The output should say: "This message shows that your installation appears to be working correctly."
4.4 [Optional] Advanced – Swap partition
Usually Virtual Private Servers (VPS) do not have Swap partitions installed. Swap partitions allow the operating system to store data on the hard disk if the needed memory exceeds the available memory (RAM) and improve system stability and performance (see section 6.4 for details).
5. NGINX web server & Mobilizon social network server
5.1 Download MOBILIZON Code repositories
Download the MOBILIZON code repositories which contain not only the MOBILIZION code, but also configs for other system services (eg, docker container services, nginx web services):
remote> cd /home/mobiusr/
remote> sudo apt install git-all
remote> git clone https://github.com/framasoft/mobilizon.git ~/mobilizon/ # Mobilizon code repository inclusing config templates for other services, eg NGINX web server
remote> git clone https://framagit.org/framasoft/joinmobilizon/docker.git ~/mobilizon-docker/ # Mobilizon code repository to configure Docker containers
remote> git clone https://wiliglpm@bitbucket.org/wiliglpm/mobilizon-configs.git ~/mobilizon-configs/ # Mobilizon code repository with customized configurations as used for the uppsala.social server used in this tutorial
Update the .env file and the docker-compose.yml files in the ~/docker-mobilizon/ folder based on the customized and tested files for the https://uppsala.social server from https://wiliglpm@bitbucket.org/wiliglpm/mobilizon-configs.git. The configuration files in ./mobilizon-configs/ are annotated with the following comments:
- “# — EDITED BELOW –“: The lines below were modified compared to the default configuration files, but do not have to be updated for your specific MOBILIZON installation.
- “# — EDIT BELOW –“: The lines below were modified compared to the default configuration files and should be updated for your specific MOBILIZON installation.
5.2 CERTBOT & NGINX
Install NGINX web server [14]:
remote> sudo apt install nginx certbot python3-certbot-nginx # install NGINX and Let's encrypt certification tool
Configure NGINX web server [14]:
# GET TLS CERTIFICATES
remote> sudo certbot --nginx --cert-name uppsala.social -d uppsala.social # create certificates
remote> sudo certbot certificates # check certificates
# CONFIGURE NGINX web server
remote> sudo cp ~/mobilizon-configs/nginx/mobilizon.conf /etc/nginx/sites-available/mobilizon.conf # Use NGINX configs from https://uppsala.social
remote> # Alternatively, use default NGINX configs: sudo cp ~/mobilizon/support/nginx/mobilizon-source.conf /etc/nginx/sites-available/mobilizon.conf
remote> sudo nano /etc/nginx/sites-available/mobilizon.conf
# follow all instructions in comments of mobilizon.conf file, especially:
# 1) replace example.tld with your server domain in all locations in the file
# 2) uncomment lines starting with ssl_trusted_certificate, ssl_certificate, and ssl_certificate_key to enable TLS encryption
# 3) the location instructions for static files need to be commented out for running Mobilizon as docker container, see description below
# save and exit
remote> sudo ln -s /etc/nginx/sites-available/mobilizon.conf /etc/nginx/sites-enabled/
remote> sudo rm /etc/nginx/sites-enabled/default # remove NGINX default server config
remote> sudo nginx -t # check integrity of config file
remote> sudo systemctl reload nginx # reload nginx configs
In addition to the instruction in the default comments of the NGINX configuration file mobilizon.conf, to run Mobilizon as docker container, the location instructions for static files need to be commented out!
# location ~ ^/(assets|img) {
# root /opt/mobilizon/priv/static;
# access_log off;
# add_header Cache-Control "public, max-age=31536000, s-maxage=31536000, immutable";
# }
5.3 MOBILIZON
5.3.1 Init configs
remote> cp ~/mobilizon-configs/mobilizon-docker/.env ~/mobilizon-docker/.env
remote> # Alternatively, use default .env.template in ~/mobilizon-docker/: cp env.template .env
remote> cp ~/mobilizon-docker/docker-compose.yml ~/mobilizon-docker/docker-compose.yml.default # backup default .yml file
remote> cp ~/mobilizon-configs/mobilizon-docker/docker-compose.yml ~/mobilizon-docker/docker-compose.yml
5.3.2 Configure .env file – Step 1 (before starting containers)
Follow these step to install the MOBILIZON server [7, 8]:
remote> cd ~/mobilizon-docker/
remote> nano .env
Note:
- Use only ASCII letters and numbers for passwords in the .env file. Special characters in passwords may lead to errors, eg “#” symbol will comment out rest of line!
Instance configuration: follow comments in .env file
Database settings: follow comments in .env file
Secrets:
remote> openssl rand -base64 48 # alternative: gpg --gen-random --armor 1 50 # needed for configs in .env file
Email settings:
Use specific configs for email settings from you email provider. If using privateemail.com as provider, follow their guidelines [10, 11, 12]. Using port 587 for modern TLS-encrypted text messages is recommended, since port 25 is used for unencrypted email messages, port 465 for outdated SSL-encrypted email messages. Otherwise, follow comments in .env file.
- For port 25: set MOBILIZON_SMTP_SSL=false and MOBILIZON_SMTP_TLS=never.
- For port 465: set MOBILIZON_SMTP_SSL=true and MOBILIZON_SMTP_TLS=never.
- For port 587: set MOBILIZON_SMTP_SSL=false and MOBILIZON_SMTP_TLS=always.
Start Mobilizon & Database Docker containers:
remote> sudo docker compose -f ~/mobilizon-docker/docker-compose.yml up --detach --force-recreate # User data in volumes ./db/ and ./uploads/ will be kept intact
remote> # To stop and remove docker containers use: sudo docker compose -f ~/mobilizon-docker/docker-compose.yml down
Note: The docker images will be automatically downloaded if not locally available. This may take some time.
5.3.3 Configure .env file – Step 2 (after starting containers)
The following configurations need a running Mobilizon Docker container, which need to be restarted with the updated configurations.
Correct user permissions of bind-mounted volumes:
remote> export MOBILIZON_USERID=$(sudo docker exec mobilizon sh -c 'id -u')
remote> sudo chown -R $MOBILIZON_USERID:$MOBILIZON_USERID ~/mobilizon-docker/uploads/
Note:
- No change of ownership of the volume ./db/ is required, because they are already correctly set.
- If the ./configs.exs based on the Elixir language are used (see docker-mobilizon.yml), permissions may also need to be modified.
Enable Push notifications in the web browser [15]:
remote> sudo docker compose -f ~/mobilizon-docker/docker-compose.yml exec mobilizon mobilizon_ctl webpush.gen.keypair
# Copy and paste the created output to the .env file
remote> nano ~/docker-mobilizon/.env
remote> sudo docker compose -f ~/mobilizon-docker/docker-compose.yml up --detach --force-recreate # User data in volumes ./db/ and ./uploads/ will be kept intact
After enabling push notifications on your MOBILIZON server, a user has to enable push notification in the specific browser in Mobilizon Menu > Settings > Notifications (ie, https://uppsala.social/settings/notifications).
Create Admin user:
remote> sudo docker compose -f ~/mobilizon-docker/docker-compose.yml exec mobilizon mobilizon_ctl users.new "email@uppsala.social" --admin --password "SetYourSecretPasswordHere"
Note:
- Store the output of the above command, which are your admin credentials, i a safe place, eg password manager.
- After the first sign at your server adress, eg https://uppsala.social, in your browser, you will be able to configure the details of your profile.
5.3.4 Configure Instance settings
Go to the Mobilizon server internet address, eg https://uppsala.social, login with your admin email address, eg email@uppsala.social, and password, eg “SetYourSecretPasswordHere”. After the first login you will have to provide some more details for your user profile. Then go to User Profile (ie, user icon in the top right corner) > Administration > Admin > Instance Settings. Modify or replace the suggested instance settings below as appropriate.
Instance Name: “Uppsala Social Community”
Instance Short Description:
“Uppsala.Social is a social network tool for you to organize or find events in Uppsala city and Uppsala kommun. You can also create a page for your group where the members will be able to get organized together. “
Instance Slogan: “Uppsala.Social – A community of awesome people”
Contact: “email@uppsala.social”
Logo [16]:
Favicon: Default
Default Picture: see Logo above
Instance Long Description:
“Uppsala.Social is a tool to find and organize social events and groups of like-minded people in Uppsala city and surroundings.
While the network is open to everyone, its focus is on expats in Uppsala to find like-minded people and have a great time. Therefore, the primary language of this website and of many events is likely to be English, although everyone is encouraged to use Swedish or other languages as appropriate.
Uppsala.Social is a non-profit service for the community and by the community based on the federated, open-source software “Mobilizon” to support social activities without the limitations of profit-driven services. Profit-driven services may cause considerable costs for event or group organizers or may burden users with unrequested information (eg, ads) or promote unhealthy behaviours (eg, screen addiction).
<b>Disclaimer</b>: This server is operated by private individuals, who may not be technical, financial, legal or any other sort of expert, in their free-time. Therefore, the admin team can only provide limited service in spite of best efforts to provide a positive experience for all users. Be warned, mistakes will be made! :-)”
Instance Rules [17]:
“General: Be awesome!
Specific:
1. Be Respectful
Treat everyone with respect. No harassment, hate speech, or discrimination.2. No Spam
Avoid posting spam, ads, or irrelevant content. Keep discussions meaningful.3. Keep It Professional
Share content and events that are relevant to the group’s purpose.4. Respect Privacy
Do not share others’ personal information without consent.5. Use Inclusive Language
Avoid language that excludes or offends others. Be mindful of cultural differences.6. Fact-Check Before Sharing
Do not spread false or misleading information. Verify before posting.7. Participate Actively
Engage in discussions and events. If you RSVP, attend or cancel promptly.8. Respect Intellectual Property
Do not share copyrighted material without permission.9. Report Issues
Report any rule violations or inappropriate behavior to moderators.10. Have Fun and Collaborate
Enjoy the platform, connect with others, and build meaningful relationships.”
6. Problem Solving
Any issues with the MOBILIZON software can be discussed in the MOBILIZON Forum [18]. (Note! The dominant language seems to be French.)
6.1 Checking Docker logs
remote> sudo docker logs mobilizon # check logs via "container name"
remote> sudo docker logs db # check logs via "container name"
6.2 Remove MOBILIZON installation
If something went wrong, to completely remove the current MOBILIZON installation, including the MOBILIZON and PostGIS Docker containers, and the corresponding permanent volumes with data, eg the already registered user information, and re-install the docker containers, use the following commands:
remote> sudo docker compose -f ~/mobilizon-docker/docker-compose.yml down
remote> sudo rm -r ~/mobilizon-docker/db/ # DANGER! This will remove user data!
remote> sudo rm -r ~/mobilizon-docker/uploads/ # DANGER! This will remove user data!
After the MOBILIZON Installation was removed, go back to section 5.3.2 to compose the docker containers again and set the admin account.
Note: The command
remote> sudo docker compose -f ~/mobilizon-docker/docker-compose.yml up --detach --force-recreate
will keep the user data in the folders ~/mobilizon-docker/db/ and ~/mobilizon-docker/uploads/ intact.
6.3 Create Swap Partition
Usually Virtual Private Servers (VPS) do not have Swap partitions installed. Swap partitions allow the operating system to store data on the hard disk if the needed memory exceeds the available memory (RAM) and improve system stability and performance. The following steps can be taken to install a Swap file on a running Linux Debian V12 (Bookworm) system. The instructions were created with DeepSeek and have not been tested [19].
Creating a swap file on Debian 12 (Bookworm) is a straightforward process. Here’s how you can do it:
Step 1: Check for Existing Swap
Before creating a swap file, check if your system already has swap enabled:
remote> sudo swapon --show
If no output is displayed, it means there is no active swap.
Step 2: Create a Swap File
1. Determine the size of the swap file: Decide how much swap space you need. For example, if you want a 2GB swap file, you would use `2G`. Adjust the size according to your system’s requirements.
2. Create the swap file:
Use the `fallocate` command to create a file of the desired size. For example, to create a 2GB swap file:
sudo fallocate -l 2G /swapfile
Alternatively, you can use `dd` if `fallocate` is not available:
sudo dd if=/dev/zero of=/swapfile bs=1G count=2
Replace `2G` with the size you want.
Step 3: Set Correct Permissions
The swap file should only be accessible by the root user for security reasons:
sudo chmod 600 /swapfile
Step 4: Format the File as Swap
Use the `mkswap` command to format the file as swap space:
sudo mkswap /swapfile
Step 5: Enable the Swap File
Activate the swap file:
sudo swapon /swapfile
Step 6: Verify the Swap File
Check if the swap file is active:
sudo swapon --show
You should see the `/swapfile` listed.
Step 7: Make the Swap File Permanent
To ensure the swap file is enabled after a reboot, add it to the `/etc/fstab` file:
1. Open the `/etc/fstab` file in a text editor:
sudo nano /etc/fstab
2. Add the following line at the end of the file:
/swapfile none swap sw 0 0
3. Save and close the file.
Step 8: Adjust Swappiness (Optional)
Swappiness determines how often the system uses the swap space. The default value is usually `60`. You can check the current swappiness value with:
cat /proc/sys/vm/swappiness
To change the swappiness value temporarily (until the next reboot), use:
sudo sysctl vm.swappiness=10
To make this change permanent, edit the `/etc/sysctl.conf` file:
1. Open the file:
sudo nano /etc/sysctl.conf
2. Add or modify the following line:
vm.swappiness=10
3. Save and close the file.
Conclusion
You have successfully created and enabled a swap file on Debian 12 (Bookworm). This swap file will help improve system performance when dealing with memory-intensive tasks.
6.4 Other issues
6.4.1 Instance Settings: Languages
Instance settings: Cannot set instance languages, drop-down menu not working.
Quick fix:
One can use the following work around solution based on SQL commands to modify PostGres/PostGIS database in the terminal. The alternative of using a remote SQL client, eg DBeaver, to access the PostGres database via the PostGres Docker container is too complex to setup for this small update.
Note:
- Use the “set 1” language codes from “ISO-639”: https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
- Warning! (Correct) language code for Swedish is “sv” is “Swedish”. Language code “se” is Northern Sami!
remote> sudo docker exec -it db sh
remote,docker> psql -h localhost -U mobilizon
remote,docker,postgres> \l # list databases
remote,docker,postgres> \c mobilizon # connect to mobilizon database
remote,docker,postgres> \dt # display tables
remote,docker,postgres> SELECT * FROM admin_settings; # show contents of admin_settings table # quit the output by pressing "q"
remote,docker,postgres> UPDATE admin_settings SET value = '["en"]' WHERE name ='instance_languages'; # change instance languages
remote,docker,postgres> SELECT name, value FROM admin_settings WHERE name='instance_languages'; # check changed instance languages
remote,docker,postgres> \q # quit postgres
remote,docker> exit # exit db docker container
remote> sudo docker compose -f ~/mobilizon-docker/docker-compose.yml up --detach --force-recreate
remote> exit # exit shell
Link to Issue: https://framagit.org/kaihuri/mobilizon/-/issues/1710
6.4.2 “Resend confirmation email” not working
“Resend confirmation email” does not work with administrator email “email@uppsala.social” which I configured on the command line.
Link to Issue: https://framagit.org/kaihuri/mobilizon/-/issues/1710
6.4.3 Profile Menu not updated after account switch
Quick Fix: Reload browser page
Link to issue: https://framagit.org/kaihuri/mobilizon/-/issues/1722
6.4.4 Notifications do not show up on some browsers and devices
Link to issue: https://framagit.org/kaihuri/mobilizon/-/issues/1723
6.4.5 Published, future events of newly federated instances not shown
Unclear whether it is a bug or a feature, I think a bug.
Link to issue: https://framagit.org/kaihuri/mobilizon/-/issues/1721
7. Affiliated MOBILIZON Servers
Note: Full list of MOBILIZON servers is available at https://instances.joinmobilizon.org/instances.
8. Mobilizon Client for Mobile Devices
The available “Mobilizon” App for Android [20] has not been updated since 2020 and does not work any more with current Mobilizon server installations. As workaround the following approach should work [21] to access the Mobilizon server in an app-like browser window and receive push notifications for specific events, eg important updates of events or direct messages:
- Use Android OS
- Install Browsers Firefox or Chrome
- Go to https://uppsala.social
- Go to Browser settings (three vertical dots, top right corner)
- Choose “Add to home screen”
- Go to Mobilizon > User profile >My Account > Notifications > “Activate browser push notifications”
- Configure the settings for Notifications according to your preferences
Acknowledgments
Special thanks to Stefan Strigler for introducing me to the MOBILIZON software and his kind technical support! 🙂
References
- https://en.wikipedia.org/wiki/Mobilizon
- https://mobilizon.org
- https://joinmobilizon.org
- https://docs.joinmobilizon.org
- https://framagit.org/framasoft/mobilizon
- https://github.com/framasoft/mobilizon
- https://docs.joinmobilizon.org/3.%20System%20administration/install/
- https://docs.joinmobilizon.org/3.%20System%20administration/install/docker/
- https://spf.frama.io/mobilizon/administration/faq/
- https://www.namecheap.com/support/knowledgebase/article.aspx/1179/2175/general-private-email-configuration-for-mail-clients-and-mobile-devices/
- https://www.namecheap.com/support/knowledgebase/article.aspx/9921/2215/how-to-change-namecheap-private-email-mailbox-name/
- https://www.namecheap.com/support/knowledgebase/article.aspx/9454/2226/how-to-back-up-and-restore-emails-in-private-email-webmail/
- https://docs.docker.com/engine/install/debian/
- https://marc-bouvier.frama.io/mobilizon/administration/
- https://docs.joinmobilizon.org/3.%20System%20administration/configure/push/
- Igl, W. (2025). Prompt: Can you generate a set of 10 short rules for a social network for an group of international people based on the Mobilizon software? https://chat.deepseek.com, 2025-03-17
- https://joinmobilizon.org/img/group.jpg
- https://framacolibri.org/c/mobilizon/39
- Igl, W. (2025-03-22). Prompt: How do I create a swap file on Debian Linux version 12 (Bookworm) in a running operating system? https://chat.deepseek.com
- https://f-droid.org/en/packages/app.fedilab.mobilizon/
- https://www.androidauthority.com/add-website-android-iphone-home-screen-3181682/