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='' +%}