From 020da28daab0d4b4c47559e4fd11000e099c97e1 Mon Sep 17 00:00:00 2001
From: tobi <31960611+tsmethurst@users.noreply.github.com>
Date: Mon, 14 Oct 2024 11:41:55 +0200
Subject: [PATCH] [chore] Clarify supported platforms, add notes + docs (#3427)
* [chore] Don't build for OpenBSD, add support level notes + tips
* tweak a bit
* add supported platforms matrix
---
.goreleaser.yml | 65 +++++++++++++++++++-------------
README.md | 51 +++++++++++++++++++++++--
docs/getting_started/releases.md | 50 ++++--------------------
3 files changed, 94 insertions(+), 72 deletions(-)
diff --git a/.goreleaser.yml b/.goreleaser.yml
index 4f7c92d76..855c12d6f 100644
--- a/.goreleaser.yml
+++ b/.goreleaser.yml
@@ -39,7 +39,6 @@ builds:
goos:
- linux
- freebsd
- - openbsd
goarch:
- 386
- amd64
@@ -49,19 +48,14 @@ builds:
- 6
- 7
ignore:
- # build freebsd + openbsd only for amd64
+ # Build FreeBSD
+ # only for amd64.
- goos: freebsd
goarch: arm64
- goos: freebsd
goarch: arm
- goos: freebsd
goarch: 386
- - goos: openbsd
- goarch: arm64
- - goos: openbsd
- goarch: arm
- - goos: openbsd
- goarch: 386
mod_timestamp: "{{ .CommitTimestamp }}"
# MODERNC SQLITE BINARY BUILDS
-
@@ -88,7 +82,6 @@ builds:
goos:
- linux
- freebsd
- - openbsd
goarch:
- 386
- amd64
@@ -98,19 +91,14 @@ builds:
- 6
- 7
ignore:
- # build freebsd + openbsd only for amd64
+ # Build FreeBSD
+ # only for amd64.
- goos: freebsd
goarch: arm64
- goos: freebsd
goarch: arm
- goos: freebsd
goarch: 386
- - goos: openbsd
- goarch: arm64
- - goos: openbsd
- goarch: arm
- - goos: openbsd
- goarch: 386
mod_timestamp: "{{ .CommitTimestamp }}"
# https://goreleaser.com/customization/docker/
@@ -474,17 +462,42 @@ release:
Tl;dr: Regardless of whether you're using SQLite or Postgres as your DB driver, you most likely you want the regular version without `moderncsqlite` in the name.
- However, if you're on FreeBSD or OpenBSD, use the `moderncsqlite` version instead. See the table below:
+ However, if you're on FreeBSD, 32-bit Linux or 32-bit ARM, we recommend using the `moderncsqlite` version instead.
- | OS | Architecture | Binary archive | Docker |
- | ------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
- | Linux | x86-64/AMD64 (64-bit) | [linux_amd64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_amd64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
- | Linux | x86-32/i386 (32-bit) | [linux_386.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_386.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
- | Linux | Armv8/ARM64 (64-bit) | [linux_arm64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_arm64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
- | Linux | Armv7/ARM32 (32-bit) | [linux_armv7.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_armv7.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
- | Linux | Armv6/ARM32 (32-bit) | [linux_armv6.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_armv6.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
- | OpenBSD | x86-64/AMD64 (64-bit) | [openbsd_amd64_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_openbsd_amd64_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` |
- | FreeBSD | x86-64/AMD64 (64-bit) | [freebsd_amd64_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_amd64_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` |
+ You may need to change some configuration options too. See the table below:
+
+ | OS | Architecture | Support level | Binary archive | Docker |
+ | ------- | ----------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
+ | Linux | x86-64/AMD64 (64-bit) | 🟢 Full | [linux_amd64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_amd64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
+ | Linux | Armv8/ARM64 (64-bit) | 🟢 Full | [linux_arm64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_arm64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
+ | FreeBSD | x86-64/AMD64 (64-bit) | 🟢 Full[1](#freebsd) | [freebsd_amd64_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_amd64_moderncsqlite.tar.gz) | None provided |
+ | Linux | x86-32/i386 (32-bit) | 🟡 Partial[2](#32-bit) | [linux_386_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_386_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` |
+ | Linux | Armv7/ARM32 (32-bit) | 🟡 Partial[2](#32-bit) | [linux_armv7_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_armv7_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` |
+ | Linux | Armv6/ARM32 (32-bit) | 🟡 Partial[2](#32-bit) | [linux_armv6_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_armv7_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` |
+ | Linux | x86-32/i386 (32-bit) | 🟡 Partial[2](#32-bit) | [linux_386_moderncsqlite.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_386_moderncsqlite.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}-moderncsqlite` |
+
+ #### FreeBSD
+
+ `moderncsqlite` version currently recommended, though you might have success with the regular WASM SQLite version.
+
+ If running with regular WASM SQLite and having instability or memory issues, the following settings *may* help:
+
+ ```yaml
+ db-max-open-conns-multiplier: 0
+ db-sqlite-journal-mode: "TRUNCATE"
+ db-sqlite-synchronous: "FULL"
+ ```
+
+ #### 32-bit
+
+ `moderncsqlite` version is needed, as performance with regular WASM SQLite is not guaranteed when running on 32-bit.
+
+ Remote media processing will likely not work with reasonable performance, so you should set the following config variables to prevent download of remote media onto your instance:
+
+ ```yaml
+ media-remote-max-size: 0
+ media-emoji-remote-max-size: 0
+ ```
# https://goreleaser.com/customization/changelog/
changelog:
diff --git a/README.md b/README.md
index 860ce6d8f..5a475c98a 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,11 @@ Here's a screenshot of the instance landing page!
- [OIDC integration](#oidc-integration)
- [Backend-first design](#backend-first-design)
- [Known Issues](#known-issues)
-- [Getting Started](#getting-started)
+- [Installing GoToSocial](#installing-gotosocial)
+ - [Supported Platforms](#supported-platforms)
+ - [FreeBSD](#freebsd)
+ - [32-bit](#32-bit)
+ - [OpenBSD](#openbsd)
- [Stable Releases](#stable-releases)
- [Snapshot Releases](#snapshot-releases)
- [Docker](#docker)
@@ -258,9 +262,49 @@ Since every ActivityPub server implementation has a slightly different interpret
---
-## Getting Started
+## Installing GoToSocial
-Check our [releases page](https://github.com/superseriousbusiness/gotosocial/releases) and our [getting started](https://docs.gotosocial.org/en/latest/getting_started/) documentation.
+Check our [getting started](https://docs.gotosocial.org/en/latest/getting_started/) documentation! And have a peruse of our [releases page](https://github.com/superseriousbusiness/gotosocial/releases).
+
+
+### Supported Platforms
+
+While we try to support a reasonable number of architectures and operating systems, it's not always possible to support a given platform due to library constraints or performance issues.
+
+Platforms that we don't officially support *may* still work, but we can't test or guarantee performance or stability.
+
+This is the current status of support offered by GoToSocial for different platforms (if something is unlisted it means we haven't checked yet so we don't know):
+
+| OS | Architecture | Support level | Binary archive | Docker container |
+| ------- | ----------------------- | ---------------------------------- | -------------- | ---------------- |
+| Linux | x86-64/AMD64 (64-bit) | 🟢 Full | Yes | Yes |
+| Linux | Armv8/ARM64 (64-bit) | 🟢 Full | Yes | Yes |
+| FreeBSD | x86-64/AMD64 (64-bit) | 🟢 Full[1](#freebsd) | Yes | No |
+| Linux | x86-32/i386 (32-bit) | 🟡 Partial[2](#32-bit) | Yes | Yes |
+| Linux | Armv7/ARM32 (32-bit) | 🟡 Partial[2](#32-bit) | Yes | Yes |
+| Linux | Armv6/ARM32 (32-bit) | 🟡 Partial[2](#32-bit) | Yes | Yes |
+| Linux | x86-32/i386 (32-bit) | 🟡 Partial[2](#32-bit) | Yes | Yes |
+| OpenBSD | Any | 🔴 None[3](#openbsd) | No | No |
+
+#### FreeBSD
+
+Mostly works, just a few issues with WASM SQLite; check release notes carefully when installing on FreeBSD. If running with Postgres you should have no issues.
+
+#### 32-bit
+
+GtS doesn't work well on 32-bit systems like i386, or Armv6/v7, mainly due to performance of media decoding.
+
+As such, we don't recommend running GtS on 32-bit, but you may have success if you turn off downloading of remote media.
+
+For more guidance, check release notes when trying to install on 32-bit.
+
+#### OpenBSD
+
+Marked as unsupported due to performance issues (high memory usage when idle, crashes while processing media).
+
+You may have some success if you turn off decoding of remote media.
+
+We hope to support OpenBSD better in future, but this is not guaranteed.
### Stable Releases
@@ -302,6 +346,7 @@ You can also deploy your own instance of GoToSocial with the help of:
- [Ansible Playbook (MASH)](https://github.com/mother-of-all-self-hosting/mash-playbook): The playbook supports a many services, including GoToSocial. [Documentation](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/gotosocial.md)
- [GoToSocial Helm Chart](https://github.com/fSocietySocial/charts/tree/main/charts/gotosocial) by [0hlov3](https://github.com/0hlov3).
+
---
## Contributing
diff --git a/docs/getting_started/releases.md b/docs/getting_started/releases.md
index 5f566acf0..a7ce2ddd9 100644
--- a/docs/getting_started/releases.md
+++ b/docs/getting_started/releases.md
@@ -1,47 +1,11 @@
# Releases
-GoToSocial can be installed in a number of different ways. We publish official binary releases as well as container images. A number of third-party packages are maintained by different distributions and some people have created additional deployment tooling to make it easy to deploy GoToSocial yourself.
+GoToSocial can be installed in a number of different ways. We publish official binary releases as well as container images.
-## Binary releases
+A number of third-party packages are maintained by different distributions, and some people have created additional deployment tooling to make it easy to deploy GoToSocial yourself.
-We publish binary builds for Linux to [our GitHub project](https://github.com/superseriousbusiness/gotosocial/releases):
-
-* 32-bit Intel/AMD (i386/x86)
-* 64-bit Intel/AMD (amd64/x86_64)
-* 32-bit ARM (v6 and v7)
-* 64-bit ARM64
-
-For FreeBSD we publish:
-
-* 64-bit Intel/AMD (amd64/x86_64)
-
-## Containers
-
-We also publish container images [on the Docker Hub](https://hub.docker.com/r/superseriousbusiness/gotosocial).
-
-Containers are released for the same Linux platforms as our binary releases, with the exception of 32-bit Intel/AMD.
-
-## Snapshots
-
-We publish snapshot binary builds and Docker images of whatever is currently on main.
-
-We always recommend using a stable release instead, but if you want to live on the edge (at your own risk!) then see the [snapshots](https://github.com/superseriousbusiness/gotosocial#snapshots) section on our GitHub repo for more information.
-
-## Third-party
-
-Some folks have created distribution packages for GoToSocial or additional tooling to aid in installing GoToSocial.
-
-### Distribution packages
-
-These packages are not maintained by GoToSocial, so please direct questions and issues to the repository maintainers (and donate to them!).
-
-[![Packaging status](https://repology.org/badge/vertical-allrepos/gotosocial.svg)](https://repology.org/project/gotosocial/versions)
-
-### Deployment tools
-
-You can deploy your own instance of GoToSocial with the help of:
-
-- [YunoHost GoToSocial Packaging](https://github.com/YunoHost-Apps/gotosocial_ynh) by [OniriCorpe](https://github.com/OniriCorpe).
-- [Ansible Playbook (MASH)](https://github.com/mother-of-all-self-hosting/mash-playbook): The playbook supports a many services, including GoToSocial. [Documentation](https://github.com/mother-of-all-self-hosting/mash-playbook/blob/main/docs/services/gotosocial.md)
-- GoToSocial Helm Charts:
- - [GoToSocial Helm Chart](https://github.com/fSocietySocial/charts/tree/main/charts/gotosocial) by [0hlov3](https://github.com/0hlov3).
+{%
+ include "../../README.md"
+ start=''
+ end=''
+%}