mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-14 07:37:29 -06:00
Compare commits
31 commits
main
...
v0.19.1-rc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ca04512689 | ||
|
|
0bda273f61 | ||
|
|
fd12b36fbd | ||
|
|
2f88039d57 | ||
|
|
d43fef5812 | ||
|
|
842f575785 | ||
|
|
378920ca25 | ||
|
|
882d97f7b3 | ||
|
|
958ac4c45f | ||
|
|
77008feafb | ||
|
|
307cfd0fdb | ||
|
|
75100649ff | ||
|
|
161215c54f | ||
|
|
bde189909c | ||
|
|
c88a95e3c5 | ||
|
|
293053f58c | ||
|
|
68a48d5d79 | ||
|
|
269c5556ae | ||
|
|
62538aafc8 | ||
|
|
66d465b421 | ||
|
|
99ca395e2d | ||
|
|
b3e01f46c1 | ||
|
|
60aca6daa2 | ||
|
|
512e2c88be | ||
|
|
052a84b972 | ||
|
|
10e62d8bc7 | ||
|
|
27edfccf7d | ||
|
|
034d58069c | ||
|
|
723c0af647 | ||
|
|
8aba20fb72 | ||
|
|
1acad62494 |
2177 changed files with 55727 additions and 12898 deletions
223
.drone.yml
223
.drone.yml
|
|
@ -1,223 +0,0 @@
|
|||
---
|
||||
### Drone configuration file for GoToSocial.
|
||||
### Connects to https://drone.superseriousbusiness.org to perform testing, linting, and automatic builds/pushes to docker.
|
||||
###
|
||||
### For documentation on drone, see: https://docs.drone.io/
|
||||
### For documentation on drone docker pipelines in particular: https://docs.drone.io/pipeline/docker/overview/
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: default
|
||||
|
||||
steps:
|
||||
# We use golangci-lint for linting.
|
||||
# See: https://golangci-lint.run/
|
||||
- name: lint
|
||||
image: golangci/golangci-lint:v1.62.0
|
||||
volumes:
|
||||
- name: go-build-cache
|
||||
path: /root/.cache/go-build
|
||||
- name: golangci-lint-cache
|
||||
path: /root/.cache/golangci-lint
|
||||
- name: go-src
|
||||
path: /go
|
||||
commands:
|
||||
- golangci-lint run
|
||||
when:
|
||||
event:
|
||||
include:
|
||||
- pull_request
|
||||
|
||||
- name: test
|
||||
image: golang:1.23-alpine
|
||||
volumes:
|
||||
- name: go-build-cache
|
||||
path: /root/.cache/go-build
|
||||
- name: go-src
|
||||
path: /go
|
||||
- name: wazero-compilation-cache
|
||||
path: /root/.cache/wazero
|
||||
environment:
|
||||
CGO_ENABLED: "0"
|
||||
GTS_WAZERO_COMPILATION_CACHE: "/root/.cache/wazero"
|
||||
commands:
|
||||
- apk update --no-cache && apk add git
|
||||
- >-
|
||||
go test
|
||||
-failfast
|
||||
-timeout=20m
|
||||
-tags "netgo osusergo static_build kvformat timetzdata"
|
||||
./...
|
||||
- ./test/envparsing.sh
|
||||
- ./test/swagger.sh
|
||||
depends_on:
|
||||
- lint
|
||||
when:
|
||||
event:
|
||||
include:
|
||||
- pull_request
|
||||
|
||||
- name: web-setup
|
||||
image: node:18-alpine
|
||||
volumes:
|
||||
- name: yarn_cache
|
||||
path: /tmp/cache
|
||||
commands:
|
||||
- yarn --cwd ./web/source install --frozen-lockfile --cache-folder /tmp/cache
|
||||
- yarn --cwd ./web/source ts-patch install # https://typia.io/docs/setup/#manual-setup
|
||||
depends_on:
|
||||
- test
|
||||
when:
|
||||
event:
|
||||
include:
|
||||
- pull_request
|
||||
|
||||
- name: web-lint
|
||||
image: node:18-alpine
|
||||
commands:
|
||||
- yarn --cwd ./web/source lint
|
||||
depends_on:
|
||||
- web-setup
|
||||
when:
|
||||
event:
|
||||
include:
|
||||
- pull_request
|
||||
|
||||
- name: web-build
|
||||
image: node:18-alpine
|
||||
commands:
|
||||
- yarn --cwd ./web/source build
|
||||
depends_on:
|
||||
- web-setup
|
||||
when:
|
||||
event:
|
||||
include:
|
||||
- pull_request
|
||||
|
||||
- name: snapshot
|
||||
image: superseriousbusiness/gotosocial-drone-build:0.8.0 # https://github.com/superseriousbusiness/gotosocial-drone-build
|
||||
volumes:
|
||||
- name: go-build-cache
|
||||
path: /root/.cache/go-build
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
environment:
|
||||
DOCKER_USERNAME: gotosocial
|
||||
DOCKER_PASSWORD:
|
||||
from_secret: gts_docker_password
|
||||
S3_ACCESS_KEY_ID:
|
||||
from_secret: gts_s3_access_key_id
|
||||
S3_SECRET_ACCESS_KEY:
|
||||
from_secret: gts_s3_secret_access_key
|
||||
S3_HOSTNAME: "https://s3.superseriousbusiness.org"
|
||||
S3_BUCKET_NAME: "gotosocial-snapshots"
|
||||
commands:
|
||||
# Create a snapshot build with GoReleaser.
|
||||
- git fetch --tags
|
||||
- goreleaser release --clean --snapshot
|
||||
|
||||
# Login to Docker, push Docker image snapshots + manifests.
|
||||
- /go/dockerlogin.sh
|
||||
- docker push superseriousbusiness/gotosocial:snapshot-arm64v8
|
||||
- docker push superseriousbusiness/gotosocial:snapshot-amd64
|
||||
- |
|
||||
docker manifest create superseriousbusiness/gotosocial:snapshot \
|
||||
superseriousbusiness/gotosocial:snapshot-amd64 \
|
||||
superseriousbusiness/gotosocial:snapshot-arm64v8
|
||||
- docker manifest push superseriousbusiness/gotosocial:snapshot
|
||||
|
||||
# Publish binary .tar.gz snapshots to S3.
|
||||
- /go/snapshot_publish.sh
|
||||
when:
|
||||
event:
|
||||
include:
|
||||
- push
|
||||
branch:
|
||||
include:
|
||||
- main
|
||||
|
||||
- name: release
|
||||
image: superseriousbusiness/gotosocial-drone-build:0.8.0 # https://github.com/superseriousbusiness/gotosocial-drone-build
|
||||
volumes:
|
||||
- name: go-build-cache
|
||||
path: /root/.cache/go-build
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
environment:
|
||||
DOCKER_USERNAME: gotosocial
|
||||
DOCKER_PASSWORD:
|
||||
from_secret: gts_docker_password
|
||||
GITHUB_TOKEN:
|
||||
from_secret: github_token
|
||||
commands:
|
||||
- git fetch --tags
|
||||
- /go/dockerlogin.sh
|
||||
|
||||
# When releasing, compare commits to the most recent tag that is not the
|
||||
# current one AND is not a release candidate tag (ie., no "rc" in the name).
|
||||
#
|
||||
# The DRONE_TAG env var should point to the tag that triggered this build.
|
||||
# See: https://docs.drone.io/pipeline/environment/reference/drone-tag/
|
||||
#
|
||||
# Note, this may cause annoyances when doing backport releases, for example,
|
||||
# releasing v0.10.1 when we've already released v0.15.0 or whatever, but
|
||||
# they should only be superficial annoyances related to the release notes.
|
||||
- GORELEASER_PREVIOUS_TAG=$(git tag -l | grep -v "rc\|${DRONE_TAG}" | sort -V -r | head -n 1) goreleaser release --clean
|
||||
when:
|
||||
event:
|
||||
include:
|
||||
- tag
|
||||
|
||||
# We can speed up builds significantly by caching build artifacts between runs.
|
||||
# See: https://docs.drone.io/pipeline/docker/syntax/volumes/host/
|
||||
volumes:
|
||||
- name: go-build-cache
|
||||
host:
|
||||
path: /drone/gotosocial/go-build
|
||||
- name: golangci-lint-cache
|
||||
host:
|
||||
path: /drone/gotosocial/golangci-lint
|
||||
- name: go-src
|
||||
host:
|
||||
path: /drone/gotosocial/go
|
||||
- name: docker
|
||||
host:
|
||||
path: /var/run/docker.sock
|
||||
|
||||
trigger:
|
||||
repo:
|
||||
- superseriousbusiness/gotosocial
|
||||
- NyaaaWhatsUpDoc/gotosocial
|
||||
- f0x52/gotosocial
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: cron
|
||||
|
||||
trigger:
|
||||
event:
|
||||
- cron
|
||||
cron:
|
||||
- nightly
|
||||
|
||||
clone:
|
||||
disable: true
|
||||
|
||||
steps:
|
||||
- name: mirror
|
||||
image: superseriousbusiness/gotosocial-drone-build:0.8.0
|
||||
environment:
|
||||
ORIGIN_REPO: https://github.com/superseriousbusiness/gotosocial
|
||||
TARGET_REPO: https://codeberg.org/superseriousbusiness/gotosocial
|
||||
CODEBERG_USER: gotosocialbot
|
||||
CODEBERG_EMAIL: admin@gotosocial.org
|
||||
CODEBERG_TOKEN:
|
||||
from_secret: gts_codeberg_token
|
||||
commands:
|
||||
- /go/codeberg_clone.sh
|
||||
|
||||
---
|
||||
kind: signature
|
||||
hmac: 64ce0d466c7a48b6aa24a8836cfad7eae71faeae0b2e5342beb6428233a65eee
|
||||
|
||||
...
|
||||
|
|
@ -73,4 +73,4 @@ body:
|
|||
attributes:
|
||||
label: Anything else we need to know?
|
||||
validations:
|
||||
required: false
|
||||
required: false
|
||||
1
.gitea/issue_template/config.yaml
Normal file
1
.gitea/issue_template/config.yaml
Normal file
|
|
@ -0,0 +1 @@
|
|||
blank_issues_enabled: false
|
||||
|
|
@ -41,4 +41,4 @@ body:
|
|||
label: Additional context.
|
||||
description: Add any other context or screenshots about the feature request here.
|
||||
validations:
|
||||
required: false
|
||||
required: false
|
||||
|
|
@ -64,4 +64,4 @@ body:
|
|||
attributes:
|
||||
label: Anything else we need to know?
|
||||
validations:
|
||||
required: false
|
||||
required: false
|
||||
6
.gitea/issue_template/other.md
Normal file
6
.gitea/issue_template/other.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
name: Other
|
||||
about: A different type of issue or question.
|
||||
labels:
|
||||
- question
|
||||
---
|
||||
|
|
@ -15,7 +15,7 @@ Please put an x inside each checkbox to indicate that you've read and followed i
|
|||
|
||||
If this is a documentation change, only the first checkbox must be filled (you can delete the others if you want).
|
||||
|
||||
- [ ] I/we have read the [GoToSocial contribution guidelines](https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md).
|
||||
- [ ] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md).
|
||||
- [ ] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat.
|
||||
- [ ] I/we have not leveraged AI to create the proposed changes.
|
||||
- [ ] I/we have performed a self-review of added code.
|
||||
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
|
|
@ -1,2 +0,0 @@
|
|||
open_collective: gotosocial
|
||||
liberapay: GoToSocial
|
||||
8
.github/ISSUE_TEMPLATE/custom.md
vendored
8
.github/ISSUE_TEMPLATE/custom.md
vendored
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
name: Custom issue template
|
||||
about: Describe this issue template's purpose here.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
3
.github/README.md
vendored
Normal file
3
.github/README.md
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# GoToSocial
|
||||
|
||||
This is a mirror. You can find us on https://codeberg.org/superseriousbusiness/gotosocial.
|
||||
15
.github/dependabot.yml
vendored
15
.github/dependabot.yml
vendored
|
|
@ -1,15 +0,0 @@
|
|||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "gomod" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
commit-message:
|
||||
prefix: "[chore]"
|
||||
labels:
|
||||
- "chore"
|
||||
30
.github/workflows/autoclose.yaml
vendored
Normal file
30
.github/workflows/autoclose.yaml
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
pull_request_target:
|
||||
types: [opened]
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
autoclose:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: issue
|
||||
if: ${{ github.event.issue.id != '' }}
|
||||
run: |
|
||||
gh issue close $ISSUE --comment "This repository is a mirror. Please open issues on https://codeberg.org/superseriousbusiness/gotosocial." --reason "not planned"
|
||||
gh issue lock $ISSUE
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
ISSUE: ${{ github.event.issue.html_url }}
|
||||
- name: pr
|
||||
if: ${{ github.event.pull_request.id != '' }}
|
||||
run: |
|
||||
gh pr close $PULL_REQUEST --comment "This repository is a mirror. Please open PRs on https://codeberg.org/superseriousbusiness/gotosocial."
|
||||
gh pr lock $PULL_REQUEST
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
PULL_REQUEST: ${{ github.event.pull_request.html_url }}
|
||||
|
|
@ -2,6 +2,11 @@
|
|||
version: 2
|
||||
project_name: gotosocial
|
||||
|
||||
# https://goreleaser.com/scm/gitea/#urls
|
||||
gitea_urls:
|
||||
api: https://codeberg.org/api/v1
|
||||
download: https://codeberg.org
|
||||
|
||||
# https://goreleaser.com/customization/hooks/
|
||||
before:
|
||||
hooks:
|
||||
|
|
@ -112,7 +117,7 @@ dockers:
|
|||
- "--label=org.opencontainers.image.description=Fast, fun, small ActivityPub server."
|
||||
- "--label=org.opencontainers.image.url=https://docs.gotosocial.org"
|
||||
- "--label=org.opencontainers.image.documentation=https://docs.gotosocial.org/en/latest/getting_started/installation/container/"
|
||||
- "--label=org.opencontainers.image.source=https://github.com/superseriousbusiness/gotosocial"
|
||||
- "--label=org.opencontainers.image.source=https://codeberg.org/superseriousbusiness/gotosocial"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.created={{.Date}}"
|
||||
|
|
@ -141,7 +146,7 @@ dockers:
|
|||
- "--label=org.opencontainers.image.description=Fast, fun, small ActivityPub server."
|
||||
- "--label=org.opencontainers.image.url=https://docs.gotosocial.org"
|
||||
- "--label=org.opencontainers.image.documentation=https://docs.gotosocial.org/en/latest/getting_started/installation/container/"
|
||||
- "--label=org.opencontainers.image.source=https://github.com/superseriousbusiness/gotosocial"
|
||||
- "--label=org.opencontainers.image.source=https://codeberg.org/superseriousbusiness/gotosocial"
|
||||
- "--label=org.opencontainers.image.version={{.Version}}"
|
||||
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
|
||||
- "--label=org.opencontainers.image.created={{.Date}}"
|
||||
|
|
@ -232,6 +237,10 @@ source:
|
|||
|
||||
# https://goreleaser.com/customization/release/
|
||||
release:
|
||||
# https://goreleaser.com/customization/release/#gitea
|
||||
gitea:
|
||||
owner: superseriousbusiness
|
||||
name: gotosocial
|
||||
draft: true
|
||||
prerelease: auto
|
||||
header: |
|
||||
|
|
@ -278,7 +287,7 @@ release:
|
|||
- Changed `pee pee` to `poo poo`.
|
||||
- Changed `wee wee` to `more wee wee`.
|
||||
|
||||
You can see a diff of the config file here: https://github.com/superseriousbusiness/gotosocial/compare/{{ .PreviousTag }}...{{ .Tag }}#diff-c071e03510b2c57e193a44503fd9528a785f0f411497cc75841a9f8d0b1ac622
|
||||
You can see a diff of the config file here: https://codeberg.org/superseriousbusiness/gotosocial/compare/{{ .PreviousTag }}...{{ .Tag }}#diff-c071e03510b2c57e193a44503fd9528a785f0f411497cc75841a9f8d0b1ac622
|
||||
|
||||
### Database Migrations
|
||||
|
||||
|
|
@ -300,12 +309,12 @@ release:
|
|||
|
||||
| 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 | [freebsd_amd64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_amd64.tar.gz) | Not provided |
|
||||
| FreeBSD | Armv8/ARM64 (64-bit) | 🟢 Full | [freebsd_arm64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_arm64.tar.gz) | Not provided |
|
||||
| NetBSD | x86-64/AMD64 (64-bit) | 🟢 Full | [netbsd_amd64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_netbsd_amd64.tar.gz) | Not provided |
|
||||
| NetBSD | Armv8/ARM64 (64-bit) | 🟢 Full | [netbsd_arm64.tar.gz](https://github.com/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_netbsd_arm64.tar.gz) | Not provided |
|
||||
| Linux | x86-64/AMD64 (64-bit) | 🟢 Full | [linux_amd64.tar.gz](https://codeberg.org/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://codeberg.org/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_linux_arm64.tar.gz) | `superseriousbusiness/gotosocial:{{ .Version }}` |
|
||||
| FreeBSD | x86-64/AMD64 (64-bit) | 🟢 Full | [freebsd_amd64.tar.gz](https://codeberg.org/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_amd64.tar.gz) | Not provided |
|
||||
| FreeBSD | Armv8/ARM64 (64-bit) | 🟢 Full | [freebsd_arm64.tar.gz](https://codeberg.org/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_freebsd_arm64.tar.gz) | Not provided |
|
||||
| NetBSD | x86-64/AMD64 (64-bit) | 🟢 Full | [netbsd_amd64.tar.gz](https://codeberg.org/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_netbsd_amd64.tar.gz) | Not provided |
|
||||
| NetBSD | Armv8/ARM64 (64-bit) | 🟢 Full | [netbsd_arm64.tar.gz](https://codeberg.org/superseriousbusiness/gotosocial/releases/download/{{ .Tag }}/gotosocial_{{ .Version }}_netbsd_arm64.tar.gz) | Not provided |
|
||||
|
||||
#### `nowasm`
|
||||
|
||||
|
|
@ -319,7 +328,7 @@ release:
|
|||
|
||||
# https://goreleaser.com/customization/changelog/
|
||||
changelog:
|
||||
use: github
|
||||
use: gitea
|
||||
groups:
|
||||
- title: Features and performance
|
||||
regexp: '^.*\[(?:feature|performance).*\].*$'
|
||||
|
|
|
|||
146
.woodpecker/pr.yaml
Normal file
146
.woodpecker/pr.yaml
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#when---global-workflow-conditions
|
||||
when:
|
||||
- event: pull_request
|
||||
|
||||
steps:
|
||||
# Lint the Go code only if
|
||||
# some Go files have changed.
|
||||
#
|
||||
# CI_PIPELINE_FILES is undefined if
|
||||
# files changed > 500, and empty on
|
||||
# force pushes, so account for this
|
||||
# and run step to be safe.
|
||||
lint:
|
||||
when:
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#evaluate
|
||||
# https://woodpecker-ci.org/docs/usage/environment#built-in-environment-variables
|
||||
- evaluate: >-
|
||||
(not ("CI_PIPELINE_FILES" in $env)) ||
|
||||
len(CI_PIPELINE_FILES) == 0 ||
|
||||
any(fromJSON(CI_PIPELINE_FILES), {
|
||||
# startsWith "internal/" ||
|
||||
# startsWith "cmd/" ||
|
||||
# startsWith "testrig/"
|
||||
})
|
||||
|
||||
# We use golangci-lint for linting.
|
||||
# See: https://golangci-lint.run/
|
||||
image: golangci/golangci-lint:v1.62.0
|
||||
pull: true
|
||||
|
||||
# https://woodpecker-ci.org/docs/administration/configuration/backends/docker#run-user
|
||||
backend_options:
|
||||
docker:
|
||||
user: 1000:1000
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/volumes
|
||||
volumes:
|
||||
- /woodpecker/gotosocial/go-build-cache:/.cache/go-build
|
||||
- /woodpecker/gotosocial/go-pkg-cache:/go/pkg
|
||||
- /woodpecker/gotosocial/golangci-lint-cache:/.cache/golangci-lint
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/environment
|
||||
environment:
|
||||
GOFLAGS: "-buildvcs=false"
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#commands
|
||||
commands:
|
||||
- golangci-lint run
|
||||
|
||||
# Test the Go code only if
|
||||
# some Go files have changed.
|
||||
#
|
||||
# CI_PIPELINE_FILES is undefined if
|
||||
# files changed > 500, and empty on
|
||||
# force pushes, so account for this
|
||||
# and run step to be safe.
|
||||
test:
|
||||
when:
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#evaluate
|
||||
# https://woodpecker-ci.org/docs/usage/environment#built-in-environment-variables
|
||||
- evaluate: >-
|
||||
(not ("CI_PIPELINE_FILES" in $env)) ||
|
||||
len(CI_PIPELINE_FILES) == 0 ||
|
||||
any(fromJSON(CI_PIPELINE_FILES), {
|
||||
# startsWith "internal/" ||
|
||||
# startsWith "cmd/" ||
|
||||
# startsWith "testrig/" ||
|
||||
# startsWith "vendor/"
|
||||
})
|
||||
|
||||
image: golang:1.23-alpine
|
||||
pull: true
|
||||
|
||||
# https://woodpecker-ci.org/docs/administration/configuration/backends/docker#run-user
|
||||
backend_options:
|
||||
docker:
|
||||
user: 1000:1000
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/volumes
|
||||
volumes:
|
||||
- /woodpecker/gotosocial/go-build-cache:/.cache/go-build
|
||||
- /woodpecker/gotosocial/go-pkg-cache:/go/pkg
|
||||
- /woodpecker/gotosocial/wazero-compilation-cache:/.cache/wazero
|
||||
- /woodpecker/gotosocial/test-tmp:/tmp
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/environment
|
||||
environment:
|
||||
CGO_ENABLED: "0"
|
||||
GTS_WAZERO_COMPILATION_CACHE: "/.cache/wazero"
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#commands
|
||||
commands:
|
||||
- >-
|
||||
go test
|
||||
-ldflags="-s -w -extldflags '-static'"
|
||||
-tags="netgo osusergo static_build kvformat timetzdata"
|
||||
-failfast
|
||||
-timeout=30m
|
||||
./...
|
||||
- ./test/envparsing.sh
|
||||
- ./test/swagger.sh
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#depends_on
|
||||
depends_on: [lint]
|
||||
|
||||
# Validate the web code only
|
||||
# if web source has changed.
|
||||
#
|
||||
# CI_PIPELINE_FILES is undefined if
|
||||
# files changed > 500, and empty on
|
||||
# force pushes, so account for this
|
||||
# and run step to be safe.
|
||||
web:
|
||||
when:
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#evaluate
|
||||
# https://woodpecker-ci.org/docs/usage/environment#built-in-environment-variables
|
||||
- evaluate: >-
|
||||
(not ("CI_PIPELINE_FILES" in $env)) ||
|
||||
len(CI_PIPELINE_FILES) == 0 ||
|
||||
any(fromJSON(CI_PIPELINE_FILES), { # startsWith "web/source/" })
|
||||
|
||||
image: node:lts-alpine
|
||||
pull: true
|
||||
|
||||
# https://woodpecker-ci.org/docs/administration/configuration/backends/docker#run-user
|
||||
backend_options:
|
||||
docker:
|
||||
user: 1000:1000
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/volumes
|
||||
volumes:
|
||||
- /woodpecker/gotosocial/node_modules:/woodpecker/src/codeberg.org/superseriousbusiness/gotosocial/web/source/node_modules
|
||||
- /woodpecker/gotosocial/yarn-cache:/.cache/yarn
|
||||
- /woodpecker/gotosocial/web-dist-test:/woodpecker/src/codeberg.org/superseriousbusiness/gotosocial/web/assets/dist
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#commands
|
||||
commands:
|
||||
# Install web dependencies.
|
||||
- yarn --cwd ./web/source install --frozen-lockfile --cache-folder /.cache/yarn
|
||||
- yarn --cwd ./web/source ts-patch install # https://typia.io/docs/setup/#manual-setup
|
||||
|
||||
# Lint web source.
|
||||
- yarn --cwd ./web/source lint
|
||||
|
||||
# Ensure build works.
|
||||
- yarn --cwd ./web/source build
|
||||
54
.woodpecker/release.yaml
Normal file
54
.woodpecker/release.yaml
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#when---global-workflow-conditions
|
||||
when:
|
||||
- event: tag
|
||||
|
||||
# https://goreleaser.com/ci/woodpecker/
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#clone
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
tags: true
|
||||
|
||||
steps:
|
||||
release:
|
||||
# https://codeberg.org/superseriousbusiness/gotosocial-woodpecker-build
|
||||
image: superseriousbusiness/gotosocial-woodpecker-build:0.11.0
|
||||
pull: true
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/volumes
|
||||
volumes:
|
||||
- /woodpecker/gotosocial/go-build-cache-root:/root/.cache/go-build
|
||||
- /woodpecker/gotosocial/go-pkg-cache-root:/go/pkg
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/environment
|
||||
# https://woodpecker-ci.org/docs/usage/secrets#usage
|
||||
environment:
|
||||
# Needed for goreleaser to
|
||||
# push manifests + containers.
|
||||
DOCKER_USERNAME: gotosocial
|
||||
DOCKER_PASSWORD:
|
||||
from_secret: gts_docker_password
|
||||
|
||||
# Needed for goreleaser
|
||||
# to publish the release.
|
||||
# https://goreleaser.com/scm/gitea/
|
||||
GITEA_TOKEN:
|
||||
from_secret: codeberg_token
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#commands
|
||||
commands:
|
||||
- git fetch --tags
|
||||
- /go/dockerlogin.sh
|
||||
|
||||
# When releasing, compare commits to the most recent tag that is not the
|
||||
# current one AND is not a release candidate tag (ie., no "rc" in the name).
|
||||
#
|
||||
# The CI_COMMIT_TAG env var should point to the tag that triggered this build.
|
||||
# See: https://woodpecker-ci.org/docs/usage/environment
|
||||
#
|
||||
# Note, this may cause annoyances when doing backport releases, for example,
|
||||
# releasing v0.10.1 when we've already released v0.15.0 or whatever, but
|
||||
# they should only be superficial annoyances related to the release notes.
|
||||
- GORELEASER_PREVIOUS_TAG=$(git tag -l | grep -v "rc\|${CI_COMMIT_TAG}" | sort -V -r | head -n 1) goreleaser release --clean
|
||||
81
.woodpecker/snapshot.yaml
Normal file
81
.woodpecker/snapshot.yaml
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#when---global-workflow-conditions
|
||||
when:
|
||||
- event: push
|
||||
branch: main
|
||||
|
||||
# https://goreleaser.com/ci/woodpecker/
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#clone
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
tags: true
|
||||
|
||||
steps:
|
||||
snapshot:
|
||||
# Snapshot only if some interesting
|
||||
# source code files have changed.
|
||||
#
|
||||
# CI_PIPELINE_FILES is undefined if
|
||||
# files changed > 500, so account for
|
||||
# this and snapshot anyway if so.
|
||||
when:
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#evaluate
|
||||
# https://woodpecker-ci.org/docs/usage/environment#built-in-environment-variables
|
||||
- evaluate: >-
|
||||
(not ("CI_PIPELINE_FILES" in $env)) ||
|
||||
any(fromJSON(CI_PIPELINE_FILES), {
|
||||
# startsWith "internal/" ||
|
||||
# startsWith "cmd/" ||
|
||||
# startsWith "testrig/" ||
|
||||
# startsWith "vendor/" ||
|
||||
# startsWith "web/" ||
|
||||
# == "Dockerfile"
|
||||
})
|
||||
|
||||
# https://codeberg.org/superseriousbusiness/gotosocial-woodpecker-build
|
||||
image: superseriousbusiness/gotosocial-woodpecker-build:0.11.0
|
||||
pull: true
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/volumes
|
||||
volumes:
|
||||
- /woodpecker/gotosocial/go-build-cache-root:/root/.cache/go-build
|
||||
- /woodpecker/gotosocial/go-pkg-cache-root:/go/pkg
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/environment
|
||||
# https://woodpecker-ci.org/docs/usage/secrets#usage
|
||||
environment:
|
||||
# Needed to push snapshot
|
||||
# manifests + containers.
|
||||
DOCKER_USERNAME: gotosocial
|
||||
DOCKER_PASSWORD:
|
||||
from_secret: gts_docker_password
|
||||
|
||||
# Needed for snapshot script
|
||||
# to publish artifacts to S3.
|
||||
S3_ACCESS_KEY_ID:
|
||||
from_secret: gts_s3_access_key_id
|
||||
S3_SECRET_ACCESS_KEY:
|
||||
from_secret: gts_s3_secret_access_key
|
||||
S3_HOSTNAME: "https://s3.superseriousbusiness.org"
|
||||
S3_BUCKET_NAME: "gotosocial-snapshots"
|
||||
|
||||
# https://woodpecker-ci.org/docs/usage/workflow-syntax#commands
|
||||
commands:
|
||||
# Create a snapshot build with GoReleaser.
|
||||
- git fetch --tags
|
||||
- goreleaser release --clean --snapshot
|
||||
|
||||
# Login to Docker, push Docker image snapshots + manifests.
|
||||
- /go/dockerlogin.sh
|
||||
- docker push superseriousbusiness/gotosocial:snapshot-arm64v8
|
||||
- docker push superseriousbusiness/gotosocial:snapshot-amd64
|
||||
- |
|
||||
docker manifest create superseriousbusiness/gotosocial:snapshot \
|
||||
superseriousbusiness/gotosocial:snapshot-amd64 \
|
||||
superseriousbusiness/gotosocial:snapshot-arm64v8
|
||||
- docker manifest push superseriousbusiness/gotosocial:snapshot
|
||||
|
||||
# Publish binary .tar.gz snapshots to S3.
|
||||
- /go/snapshot_publish.sh
|
||||
|
|
@ -32,8 +32,6 @@ These contribution guidelines were adapted from / inspired by those of Gitea (ht
|
|||
- [Federation](#federation)
|
||||
- [Updating Swagger docs](#updating-swagger-docs)
|
||||
- [CI/CD configuration](#cicd-configuration)
|
||||
- [Release Checklist](#release-checklist)
|
||||
- [What if something goes wrong?](#what-if-something-goes-wrong)
|
||||
|
||||
## Introduction
|
||||
|
||||
|
|
@ -41,11 +39,11 @@ This document contains important information that will help you to write a succe
|
|||
|
||||
## Bug reports and feature requests
|
||||
|
||||
Currently, we use Github's issue system for tracking bug reports and feature requests.
|
||||
Currently, we use Codeberg's issue system for tracking bug reports and feature requests.
|
||||
|
||||
You can view all open issues [here](https://github.com/superseriousbusiness/gotosocial/issues "The Github Issues page for GoToSocial").
|
||||
You can view all open issues [here](https://codeberg.org/superseriousbusiness/gotosocial/issues "The Codeberg Issues page for GoToSocial").
|
||||
|
||||
Before opening a new issue, whether bug or feature request, **please search carefully through both open and closed issues to make sure it hasn't been addressed already**. You can use Github's keyword issue search for this. If your issue is a duplicate of an existing issue, it will be closed.
|
||||
Before opening a new issue, whether bug or feature request, **please search carefully through both open and closed issues to make sure it hasn't been addressed already**. You can use Codeberg's keyword issue search for this. If your issue is a duplicate of an existing issue, it will be closed.
|
||||
|
||||
Before you open a feature request issue, please consider the following:
|
||||
|
||||
|
|
@ -122,26 +120,22 @@ Beware that `conda env export` will add a `prefix` entry to the environment.yml
|
|||
|
||||
### Golang forking quirks
|
||||
|
||||
One of the quirks of Golang is that it relies on the source management path being the same as the one used within `go.mod` and in package imports within individual Go files. This makes working with forks a bit awkward.
|
||||
|
||||
Let's say you fork GoToSocial to `github.com/yourgithubname/gotosocial`, and then clone that repository to `~/go/src/github.com/yourgithubname/gotosocial`. You will probably run into errors trying to run tests or build, so you might change your `go.mod` file so that the module is called `github.com/yourgithubname/gotosocial` instead of `github.com/superseriousbusiness/gotosocial`. But then this breaks all the imports within the project. Nightmare! So now you have to go through the source files and painstakingly replace `github.com/superseriousbusiness/gotosocial` with `github.com/yourgithubname/gotosocial`. This works OK, but when you decide to make a pull request against the original repo, all the changed paths are included! Argh!
|
||||
|
||||
The correct solution to this is to fork, then clone the upstream repository, then set `origin` of the upstream repository to that of your fork.
|
||||
One of the quirks of Golang is that it relies on the source management path being the same as the one used within `go.mod` and in package imports within individual Go files. This makes working with forks a bit awkward. The solution to this is to fork, then clone the upstream repository, then set `origin` of the upstream repository to that of your fork.
|
||||
|
||||
See [this blog post](https://blog.sgmansfield.com/2016/06/working-with-forks-in-go/) for more details.
|
||||
|
||||
In case this post disappears, here are the steps (slightly modified):
|
||||
|
||||
>
|
||||
> Fork the repository on GitHub or set up whatever other remote git repo you will be using. In this case, I would go to GitHub and fork the repository.
|
||||
> Fork the repository on Codeberg or set up whatever other remote git repo you will be using. In this case, I would go to Codeberg and fork the repository.
|
||||
>
|
||||
> Now clone the upstream repo (not the fork):
|
||||
>
|
||||
> `mkdir -p ~/go/src/github.com/superseriousbusiness && git clone git@github.com:superseriousbusiness/gotosocial ~/go/src/github.com/superseriousbusiness/gotosocial`
|
||||
> `mkdir -p ~/go/src/code.superseriousbusiness.org && git clone git@codeberg.org:superseriousbusiness/gotosocial ~/go/src/code.superseriousbusiness.org/gotosocial`
|
||||
>
|
||||
> Navigate to the top level of the upstream repository on your computer:
|
||||
>
|
||||
> `cd ~/go/src/github.com/superseriousbusiness/gotosocial`
|
||||
> `cd ~/go/src/code.superseriousbusiness.org/gotosocial`
|
||||
>
|
||||
> Rename the current origin remote to upstream:
|
||||
>
|
||||
|
|
@ -149,7 +143,7 @@ In case this post disappears, here are the steps (slightly modified):
|
|||
>
|
||||
> Add your fork as origin:
|
||||
>
|
||||
> `git remote add origin git@github.com:yourgithubname/gotosocial`
|
||||
> `git remote add origin git@codeberg.org:username/gotosocial`
|
||||
>
|
||||
|
||||
Be sure to run `git fetch` before building the project for the first time.
|
||||
|
|
@ -160,7 +154,7 @@ Be sure to run `git fetch` before building the project for the first time.
|
|||
|
||||
To get started, you first need to have Go installed. Check the top of the `go.mod` file to see which version of Go you need to install, and see [here](https://golang.org/doc/install) for installation instructions.
|
||||
|
||||
Once you've got Go installed, clone this repository into your Go path. Normally, this should be `~/go/src/github.com/superseriousbusiness/gotosocial`.
|
||||
Once you've got Go installed, clone this repository into your Go path. Normally, this should be `~/go/src/code.superseriousbusiness.org/gotosocial`.
|
||||
|
||||
Once you've installed the prerequisites, you can try building the project: `./scripts/build.sh`. This will build the `gotosocial` binary.
|
||||
|
||||
|
|
@ -397,7 +391,7 @@ If there's no output, great! It passed :)
|
|||
|
||||
### Testing
|
||||
|
||||
GoToSocial provides a [testrig](https://github.com/superseriousbusiness/gotosocial/tree/main/testrig) with a number of mock packages you can use in integration tests.
|
||||
GoToSocial provides a [testrig](https://codeberg.org/superseriousbusiness/gotosocial/tree/main/testrig) with a number of mock packages you can use in integration tests.
|
||||
|
||||
One thing that *isn't* mocked is the Database interface because it's just easier to use an in-memory SQLite database than to mock everything out.
|
||||
|
||||
|
|
@ -496,55 +490,12 @@ You shouldn't need to install go-swagger to run this command, as it's already in
|
|||
|
||||
### CI/CD configuration
|
||||
|
||||
GoToSocial uses [Drone](https://www.drone.io/) for CI/CD tasks like running tests, linting, and building Docker containers.
|
||||
GoToSocial uses [Woodpecker CI](https://woodpecker-ci.org/) for CI/CD tasks like running tests, linting, and building Docker containers.
|
||||
|
||||
These runs are integrated with GitHub, and will be run on opening a pull request or merging into main.
|
||||
These runs are integrated with Codeberg, and will be run on opening a pull request or merging into main.
|
||||
|
||||
The Drone instance for GoToSocial is [here](https://drone.superseriousbusiness.org/superseriousbusiness/gotosocial).
|
||||
The `woodpecker` pipeline files are in the `.woodpecker` directory of this repository — these define how and when Woodpecker should run.
|
||||
|
||||
The `drone.yml` file is [here](./.drone.yml) — this defines how and when Drone should run. Documentation for Drone is [here](https://docs.drone.io/).
|
||||
The Woodpecker instance for GoToSocial is [here](https://woodpecker.superseriousbusiness.org/repos/2).
|
||||
|
||||
It is worth noting that the `drone.yml` file must be signed by the Drone admin account to be considered valid. This must be done every time the file is changed. This is to prevent tampering and hijacking of the Drone instance. See [here](https://docs.drone.io/signature/).
|
||||
|
||||
To sign the file, first install and setup the [drone cli tool](https://docs.drone.io/cli/install/). Then, run:
|
||||
|
||||
```bash
|
||||
drone -t PUT_YOUR_DRONE_ADMIN_TOKEN_HERE -s https://drone.superseriousbusiness.org sign superseriousbusiness/gotosocial --save
|
||||
```
|
||||
|
||||
### Release Checklist
|
||||
|
||||
First things first: If this is a security hot-fix, we'll probably rush through this list, and make a prettier release a few days later.
|
||||
|
||||
Now, with that out of the way, here's our Checklist.
|
||||
|
||||
GoToSocial follows [Semantic Versioning](https://semver.org/).
|
||||
So our first concern on the Checklist is:
|
||||
|
||||
- What version are we releasing?
|
||||
|
||||
Next we need to check:
|
||||
|
||||
- Do the assets have to be rebuilt and committed to the repository.
|
||||
- Do the swagger docs have to be rebuilt?
|
||||
|
||||
On the project management side:
|
||||
|
||||
- Are there any issues that have to be moved to a different milestone?
|
||||
- Are there any things on the [Roadmap](./ROADMAP.md) that can be ticked off?
|
||||
|
||||
Once we're happy with our Checklist, we can create the tag, and push it.
|
||||
And the rest [is automation](./.drone.yml).
|
||||
|
||||
We can now head to GitHub, and add some personality to the release notes.
|
||||
Finally, we make announcements on the all our channels that the release is out!
|
||||
|
||||
#### What if something goes wrong?
|
||||
|
||||
Sometimes things go awry.
|
||||
We release a buggy release, we forgot something something important.
|
||||
|
||||
If the release is so bad that it's unusable or dangerous! to a great part of our user-base, we can pull.
|
||||
That is: Delete the tag.
|
||||
|
||||
Either way, once we've resolved the issue, we just start from the top of this list again. Version numbers are cheap. It's cheap to burn them.
|
||||
Documentation for Woodpecker is [here](https://woodpecker-ci.org/docs/intro).
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# Dockerfile reference: https://docs.docker.com/engine/reference/builder/
|
||||
|
||||
# stage 1: generate the web/assets/dist bundles
|
||||
FROM --platform=${BUILDPLATFORM} node:18-alpine AS bundler
|
||||
FROM --platform=${BUILDPLATFORM} node:lts-alpine AS bundler
|
||||
|
||||
COPY web web
|
||||
RUN yarn --cwd ./web/source install && \
|
||||
|
|
@ -11,7 +11,7 @@ RUN yarn --cwd ./web/source install && \
|
|||
rm -rf ./web/source
|
||||
|
||||
# stage 2: build the executor container
|
||||
FROM --platform=${TARGETPLATFORM} alpine:3.20 as executor
|
||||
FROM --platform=${TARGETPLATFORM} alpine:3.21 AS executor
|
||||
|
||||
# switch to non-root user:group for GtS
|
||||
USER 1000:1000
|
||||
|
|
|
|||
91
README.md
91
README.md
|
|
@ -3,23 +3,23 @@
|
|||
|
||||
**Update regarding corporate sponsors: we are open to sponsorship arrangements with organizations that align with our values; see the conditions below**
|
||||
|
||||
GoToSocial is an [ActivityPub](https://activitypub.rocks/) social network server, written in Golang.
|
||||
🏳️🌈 GoToSocial is an [ActivityPub](https://activitypub.rocks/) social network server, written in Golang. 🏳️⚧️
|
||||
|
||||
With GoToSocial, you can keep in touch with your friends, post, read, and share images and articles. All without being tracked or advertised to!
|
||||
|
||||
<p align="middle">
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/sloth.webp" width="300"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/sloth.webp" width="300"/>
|
||||
</p>
|
||||
|
||||
**GoToSocial is still [BETA SOFTWARE](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)**. It is already deployable and useable, and it federates cleanly with many other Fediverse servers (not yet all). However, many things are not yet implemented, and there are plenty of bugs! We left alpha stage around September/October 2024, and we intend to exit beta some time around 2026.
|
||||
|
||||
Documentation is at [docs.gotosocial.org](https://docs.gotosocial.org). You can skip straight to the API documentation [here](https://docs.gotosocial.org/en/latest/api/swagger/).
|
||||
|
||||
To build from source, check the [CONTRIBUTING.md](https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md) file.
|
||||
To build from source, check the [CONTRIBUTING.md](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md) file.
|
||||
|
||||
Here's a screenshot of the instance landing page! Check out the project's [official account](https://gts.superseriousbusiness.org/@gotosocial) running on GoToSocial.
|
||||
|
||||

|
||||

|
||||
<!--overview-end-->
|
||||
|
||||
## Table of Contents <!-- omit in toc -->
|
||||
|
|
@ -40,6 +40,7 @@ Here's a screenshot of the instance landing page! Check out the project's [offic
|
|||
- [Various federation modes](#various-federation-modes)
|
||||
- [OIDC integration](#oidc-integration)
|
||||
- [Backend-first design](#backend-first-design)
|
||||
- [Alternatives to GoToSocial](#alternatives-to-gotosocial)
|
||||
- [Known Issues](#known-issues)
|
||||
- [Installing GoToSocial](#installing-gotosocial)
|
||||
- [Supported Platforms](#supported-platforms)
|
||||
|
|
@ -73,7 +74,7 @@ GoToSocial provides a lightweight, customizable, and safety-focused entryway int
|
|||
|
||||
If you've ever used something like Twitter or Tumblr (or even Myspace!) GoToSocial will probably feel familiar to you: You can follow people and have followers, you make posts which people can favourite and reply to and share, and you scroll through posts from people you follow using a timeline. You can write long posts or short posts, or just post images, it's up to you. You can also, of course, block people or otherwise limit interactions that you don't want by posting just to your friends.
|
||||
|
||||

|
||||

|
||||
|
||||
**GoToSocial does NOT use recommendation algorithms or collect data about you to suggest content or 'improve your experience'**. The timeline is chronological: whatever you see at the top of your timeline is there because it's *just been posted*, not because it's been selected as interesting (or controversial) based on your personal profile.
|
||||
|
||||
|
|
@ -85,7 +86,7 @@ GoToSocial doesn't claim to be *better* than any other application, but it offer
|
|||
|
||||
Because GoToSocial uses [ActivityPub](https://activitypub.rocks/), you can hang out not just with people on your home server, but with people all over the [Fediverse](https://en.wikipedia.org/wiki/Fediverse), seamlessly.
|
||||
|
||||

|
||||

|
||||
|
||||
Federation means that your home server is part of a network of servers all over the world that all communicate using the same protocol. Your data is no longer centralized on one company's servers, but resides on your own server and is shared — as you see fit — across a resilient web of servers run by other people.
|
||||
|
||||
|
|
@ -101,7 +102,7 @@ It began as a solo project, and then picked up steam as more developers became i
|
|||
|
||||
We made our first Alpha release in November 2021. We left Alpha and entered Beta in September/October 2024.
|
||||
|
||||
For a detailed view on what's implemented and what's not, and progress made towards [stable release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Stable_release), please see [the roadmap document](https://github.com/superseriousbusiness/gotosocial/blob/main/ROADMAP.md).
|
||||
For a detailed view on what's implemented and what's not, and progress made towards [stable release](https://en.wikipedia.org/wiki/Software_release_life_cycle#Stable_release), please see [the roadmap document](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/ROADMAP.md).
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -129,7 +130,7 @@ GoToSocial offers public, unlisted/unlocked, followers-only, and direct posts (s
|
|||
|
||||
GoToSocial lets you choose who can reply to your posts, via [interaction policies](https://docs.gotosocial.org/en/latest/user_guide/settings/#default-interaction-policies). You can choose to let anyone reply to your posts, let only your friends reply, and more.
|
||||
|
||||

|
||||

|
||||
|
||||
### Local-only posting
|
||||
|
||||
|
|
@ -143,7 +144,7 @@ GoToSocial lets you opt-in to exposing your profile as an RSS feed, so that peop
|
|||
|
||||
With GoToSocial, you can write posts using the popular, easy-to-use Markdown markup language, which lets you produce rich HTML posts with support for blockquotes, syntax-highlighted code blocks, lists, inline links, and more.
|
||||
|
||||

|
||||

|
||||
|
||||
### Themes and custom CSS
|
||||
|
||||
|
|
@ -154,61 +155,61 @@ It's also easy for admins to [add their own custom themes](https://docs.gotosoci
|
|||
<details>
|
||||
<summary>Show theme examples</summary>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-blurple-dark.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-blurple-dark.png"/>
|
||||
<figcaption>Blurple dark</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-blurple-light.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-blurple-light.png"/>
|
||||
<figcaption>Blurple light</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-brutalist-light.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-brutalist-light.png"/>
|
||||
<figcaption>Brutalist light</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-brutalist-dark.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-brutalist-dark.png"/>
|
||||
<figcaption>Brutalist dark</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-ecks-pee.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-ecks-pee.png"/>
|
||||
<figcaption>Ecks pee</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-midnight-trip.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-midnight-trip.png"/>
|
||||
<figcaption>Midnight trip</figcaption>
|
||||
</figure>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-moonlight-hunt.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-moonlight-hunt.png"/>
|
||||
<figcaption>Moonlight hunt</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-rainforest.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-rainforest.png"/>
|
||||
<figcaption>Rainforest</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-soft.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-soft.png"/>
|
||||
<figcaption>Soft</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-solarized-dark.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-solarized-dark.png"/>
|
||||
<figcaption>Solarized dark</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-solarized-light.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-solarized-light.png"/>
|
||||
<figcaption>Solarized light</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-sunset.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-sunset.png"/>
|
||||
<figcaption>Sunset</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
|
|
@ -218,7 +219,7 @@ It's also easy for admins to [add their own custom themes](https://docs.gotosoci
|
|||
|
||||
GoToSocial uses only about 250-350MiB of RAM, and requires very little CPU power, so it plays nice with single-board computers, old laptops and tiny $5/month VPSes.
|
||||
|
||||

|
||||

|
||||
|
||||
No external dependencies apart from a database (or just use SQLite!).
|
||||
|
||||
|
|
@ -257,17 +258,29 @@ On top of this API, web developers are encouraged to build any front-end impleme
|
|||
|
||||
---
|
||||
|
||||
## Alternatives to GoToSocial
|
||||
|
||||
Don't like GtS but still want to use the fediverse? Like GtS but prefer not to use beta software? There are lots of alternatives that might suit you better! Here are some that we know work well (alphabetical order):
|
||||
|
||||
- [Akkoma]([https://](https://akkoma.social/)): Full-featured ActivityPub microblogging with emoji reacts and quote posts (Elixir).
|
||||
- [Honk](https://humungus.tedunangst.com/r/honk/m/activitypub.7): Minimalist, opinionated microblogging with "No likes, no faves, no polls, no stars, no claps, no counts." (Go).
|
||||
- [Iceshrimp.net](https://iceshrimp.dev/iceshrimp/Iceshrimp.NET): rewrite of Iceshrimp from the ground up (.Net).
|
||||
- [Mastodon](https://joinmastodon.org/): Actively developed, widely recognized, scaleable ActivityPub microblogging instance (Ruby).
|
||||
- [Snac2](https://codeberg.org/grunfink/snac2): Simple, minimalistic instance with very low system requirements (portable C).
|
||||
|
||||
---
|
||||
|
||||
## Known Issues
|
||||
|
||||
Since GoToSocial is still in beta, there are plenty of bugs. We use [GitHub issues](https://github.com/superseriousbusiness/gotosocial/issues?q=is%3Aissue+is%3Aopen+label%3Abug) to track these.
|
||||
Since GoToSocial is still in beta, there are plenty of bugs. We use [Codeberg issues](https://codeberg.org/superseriousbusiness/gotosocial/issues?q=is%3Aissue+is%3Aopen+label%3Abug) to track these.
|
||||
|
||||
Since every ActivityPub server implementation has a slightly different interpretation of the protocol, some servers don't quite federate properly with GoToSocial yet. We're tracking these issues [in this project](https://github.com/superseriousbusiness/gotosocial/projects/4). Eventually, we want to make sure that any implementation that can federate nicely with Mastodon should also be able to federate with GoToSocial.
|
||||
Since every ActivityPub server implementation has a slightly different interpretation of the protocol, some servers don't quite federate properly with GoToSocial yet. We're tracking these issues [in this project](https://codeberg.org/superseriousbusiness/gotosocial/projects/4). Eventually, we want to make sure that any implementation that can federate nicely with Mastodon should also be able to federate with GoToSocial.
|
||||
|
||||
---
|
||||
|
||||
## Installing GoToSocial
|
||||
|
||||
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).
|
||||
Check our [getting started](https://docs.gotosocial.org/en/latest/getting_started/) documentation! And have a peruse of our [releases page](https://codeberg.org/superseriousbusiness/gotosocial/releases).
|
||||
|
||||
<!--releases-start-->
|
||||
### Supported Platforms
|
||||
|
|
@ -339,11 +352,11 @@ To run from main using Docker, use the `snapshot` Docker tag. The Docker image `
|
|||
|
||||
To run from main using a binary release, download the appropriate .tar.gz file for your architecture from our [self-hosted Minio S3 repository](https://minio.s3.superseriousbusiness.org/browser/gotosocial-snapshots).
|
||||
|
||||
Snapshot binary releases in the S3 bucket are keyed by Github commit hash. To get the latest one, sort by Last Modified, or check out the list of commits [here](https://github.com/superseriousbusiness/gotosocial/commits/main), copy the SHA of the latest one, and paste it in the Minio console filter. Snapshot binary releases are expired after 28 days, to keep our hosting costs down.
|
||||
Snapshot binary releases in the S3 bucket are keyed by commit hash. To get the latest one, sort by Last Modified, or check out the list of commits [here](https://codeberg.org/superseriousbusiness/gotosocial/commits/main), copy the SHA of the latest one, and paste it in the Minio console filter. Snapshot binary releases are expired after 28 days, to keep our hosting costs down.
|
||||
|
||||
### From Source
|
||||
|
||||
Instructions for building GoToSocial from source are in the [CONTRIBUTING.md](https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md) file.
|
||||
Instructions for building GoToSocial from source are in the [CONTRIBUTING.md](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md) file.
|
||||
|
||||
### Third-party Packaging
|
||||
|
||||
|
|
@ -364,7 +377,7 @@ You can also deploy your own instance of GoToSocial with the help of:
|
|||
|
||||
## Contributing
|
||||
|
||||
You would like to contribute to GtS? Great! ❤️❤️❤️ Check out the issues page to see if there's anything you intend to jump in on, and read the [CONTRIBUTING.md](https://github.com/superseriousbusiness/gotosocial/blob/main/CONTRIBUTING.md) file for guidelines and setting up your dev environment.
|
||||
You would like to contribute to GtS? Great! ❤️❤️❤️ Check out the issues page to see if there's anything you intend to jump in on, and read the [CONTRIBUTING.md](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md) file for guidelines and setting up your dev environment.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -372,7 +385,7 @@ You would like to contribute to GtS? Great! ❤️❤️❤️ Check out the iss
|
|||
|
||||
For questions and comments, you can [join our Matrix space](https://matrix.to/#/#gotosocial-space:superseriousbusiness.org) at `#gotosocial-space:superseriousbusiness.org`. This is the quickest way to reach the devs. You can also mail [admin@gotosocial.org](mailto:admin@gotosocial.org).
|
||||
|
||||
For bugs and feature requests, please check to see if there's [already an issue](https://github.com/superseriousbusiness/gotosocial/issues), and if not, open one or use one of the above channels to make a request (if you don't have a Github account).
|
||||
For bugs and feature requests, please check to see if there's [already an issue](https://codeberg.org/superseriousbusiness/gotosocial/issues), and if not, open one or use one of the above channels to make a request (if you don't have a Codeberg account).
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -433,10 +446,10 @@ The following open source libraries, frameworks, and tools are used by GoToSocia
|
|||
- [spf13/viper](https://github.com/spf13/viper); configuration management. [Apache-2.0 License](https://spdx.org/licenses/Apache-2.0.html).
|
||||
- [stretchr/testify](https://github.com/stretchr/testify); test framework. [MIT License](https://spdx.org/licenses/MIT.html).
|
||||
- superseriousbusiness:
|
||||
- [superseriousbusiness/activity](https://codeberg.org/superseriousbusiness/activity) forked from [go-fed/activity](https://github.com/go-fed/activity); Golang ActivityPub/ActivityStreams library. [BSD-3-Clause License](https://spdx.org/licenses/BSD-3-Clause.html).
|
||||
- [superseriousbusiness/exif-terminator](https://codeberg.org/superseriousbusiness/exif-terminator); EXIF data removal. [GNU AGPL v3 LICENSE](https://spdx.org/licenses/AGPL-3.0-or-later.html).
|
||||
- [superseriousbusiness/httpsig](https://codeberg.org/superseriousbusiness/httpsig) forked from [go-fed/httpsig](https://github.com/go-fed/httpsig); secure HTTP signature library. [BSD-3-Clause License](https://spdx.org/licenses/BSD-3-Clause.html).
|
||||
- [superseriousbusiness/oauth2](https://codeberg.org/superseriousbusiness/oauth2) forked from [go-oauth2/oauth2](https://github.com/go-oauth2/oauth2); OAuth server framework and token handling. [MIT License](https://spdx.org/licenses/MIT.html).
|
||||
- [superseriousbusiness/activity](https://code.superseriousbusiness.org/activity) forked from [go-fed/activity](https://github.com/go-fed/activity); Golang ActivityPub/ActivityStreams library. [BSD-3-Clause License](https://spdx.org/licenses/BSD-3-Clause.html).
|
||||
- [superseriousbusiness/exif-terminator](https://code.superseriousbusiness.org/exif-terminator); EXIF data removal. [GNU AGPL v3 LICENSE](https://spdx.org/licenses/AGPL-3.0-or-later.html).
|
||||
- [superseriousbusiness/httpsig](https://code.superseriousbusiness.org/httpsig) forked from [go-fed/httpsig](https://github.com/go-fed/httpsig); secure HTTP signature library. [BSD-3-Clause License](https://spdx.org/licenses/BSD-3-Clause.html).
|
||||
- [superseriousbusiness/oauth2](https://code.superseriousbusiness.org/oauth2) forked from [go-oauth2/oauth2](https://github.com/go-oauth2/oauth2); OAuth server framework and token handling. [MIT License](https://spdx.org/licenses/MIT.html).
|
||||
- [temoto/robotstxt](https://github.com/temoto/robotstxt); robots.txt parsing. [MIT License](https://spdx.org/licenses/MIT.html).
|
||||
- [tdewolff/minify](https://github.com/tdewolff/minify); HTML minification for Markdown-submitted posts. [MIT License](https://spdx.org/licenses/MIT.html).
|
||||
- [uber-go/automaxprocs](https://github.com/uber-go/automaxprocs); GOMAXPROCS automation. [MIT License](https://spdx.org/licenses/MIT.html).
|
||||
|
|
@ -454,10 +467,10 @@ Sloth logo by [Anna Abramek](https://abramek.art/).
|
|||
|
||||
The Creative Commons Attribution-ShareAlike 4.0 International License license applies specifically to the following files and subdirectories of this repository:
|
||||
|
||||
- [sloth logo png](https://github.com/superseriousbusiness/gotosocial/blob/main/web/assets/logo.png)
|
||||
- [sloth logo webp](https://github.com/superseriousbusiness/gotosocial/blob/main/web/assets/logo.webp)
|
||||
- [sloth logo svg](https://github.com/superseriousbusiness/gotosocial/blob/main/web/assets/logo.svg)
|
||||
- [all default avatars](https://github.com/superseriousbusiness/gotosocial/blob/main/web/assets/default_avatars)
|
||||
- [sloth logo png](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/web/assets/logo.png)
|
||||
- [sloth logo webp](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/web/assets/logo.webp)
|
||||
- [sloth logo svg](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/web/assets/logo.svg)
|
||||
- [all default avatars](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/web/assets/default_avatars)
|
||||
|
||||
Under the terms of the license, you are free to:
|
||||
|
||||
|
|
@ -515,7 +528,7 @@ If after reading this you are still interested in supporting us, that is wonderf
|
|||
|
||||
<img src="https://nlnet.nl/logo/NGI/NGIZero-green.hex.svg" width="75" alt="NGIZero logo"/>
|
||||
|
||||
Combined with the above crowdfunding sources, 2023 Alpha development of GoToSocial was funded by a 50,000 EUR grant from the [NGI0 Entrust Fund](https://nlnet.nl/entrust/), via [NLnet](https://nlnet.nl/). See [here](https://nlnet.nl/project/GoToSocial/#ack) for more details. The successful grant application is archived [here](https://github.com/superseriousbusiness/gotosocial/blob/main/archive/nlnet/2022-next-generation-internet-zero.md).
|
||||
Combined with the above crowdfunding sources, 2023 Alpha development of GoToSocial was funded by a 50,000 EUR grant from the [NGI0 Entrust Fund](https://nlnet.nl/entrust/), via [NLnet](https://nlnet.nl/). See [here](https://nlnet.nl/project/GoToSocial/#ack) for more details. The successful grant application is archived [here](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/archive/nlnet/2022-next-generation-internet-zero.md).
|
||||
|
||||
2024 Beta development of GoToSocial is being funded by an additional 50,000 EUR grant from the [NGI0 Entrust Fund](https://nlnet.nl/entrust/), via [NLnet](https://nlnet.nl/).
|
||||
|
||||
|
|
@ -525,7 +538,7 @@ Combined with the above crowdfunding sources, 2023 Alpha development of GoToSoci
|
|||
|
||||

|
||||
|
||||
GoToSocial is free software, licensed under the [GNU AGPL v3 LICENSE](https://github.com/superseriousbusiness/gotosocial/blob/main/LICENSE). We encourage forking and changing the code, hacking around with it, and experimenting.
|
||||
GoToSocial is free software, licensed under the [GNU AGPL v3 LICENSE](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/LICENSE). We encourage forking and changing the code, hacking around with it, and experimenting.
|
||||
|
||||
See [here](https://www.gnu.org/licenses/why-affero-gpl.html) for the differences between AGPL versus GPL licensing, and [here](https://www.gnu.org/licenses/gpl-faq.html) for FAQ's about GPL licenses, including the AGPL.
|
||||
|
||||
|
|
|
|||
|
|
@ -47,13 +47,13 @@ What follows is a rough timeline of features that will be implemented on the roa
|
|||
|
||||
### Mid 2023
|
||||
|
||||
- [x] **Hashtags** -- implement federating hashtags and viewing hashtags to allow users to discover posts that they might be interested in. (Done! https://github.com/superseriousbusiness/gotosocial/pull/2032).
|
||||
- [x] **Hashtags** -- implement federating hashtags and viewing hashtags to allow users to discover posts that they might be interested in. (Done! https://codeberg.org/superseriousbusiness/gotosocial/pulls/2032).
|
||||
|
||||
### Mid/late 2023
|
||||
|
||||
- [x] **Polls** -- implementing parsing, creating, and voting in polls. (Done! https://github.com/superseriousbusiness/gotosocial/pull/2330)
|
||||
- [x] **Mute posts/threads** -- opt-out of notifications for replies to a thread; no longer show a given post in your timeline. (Done! https://github.com/superseriousbusiness/gotosocial/pull/2278)
|
||||
- [x] **Limited peering/allowlists** -- allow instance admins to limit federation with other instances by default. (Done! https://github.com/superseriousbusiness/gotosocial/pull/2200)
|
||||
- [x] **Polls** -- implementing parsing, creating, and voting in polls. (Done! https://codeberg.org/superseriousbusiness/gotosocial/pulls/2330)
|
||||
- [x] **Mute posts/threads** -- opt-out of notifications for replies to a thread; no longer show a given post in your timeline. (Done! https://codeberg.org/superseriousbusiness/gotosocial/pulls/2278)
|
||||
- [x] **Limited peering/allowlists** -- allow instance admins to limit federation with other instances by default. (Done! https://codeberg.org/superseriousbusiness/gotosocial/pulls/2200)
|
||||
|
||||
### Early 2024
|
||||
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ todo
|
|||
|
||||
### Friendica
|
||||
|
||||
Unsure: Friendica and GoToSocial still don't federate properly with one another (https://github.com/superseriousbusiness/gotosocial/issues/169) so it's hard to test this.
|
||||
Unsure: Friendica and GoToSocial still don't federate properly with one another (https://codeberg.org/superseriousbusiness/gotosocial/issues/169) so it's hard to test this.
|
||||
|
||||
## What should GoToSocial do?
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ GoToSocial
|
|||
|
||||
> Website / wiki
|
||||
|
||||
https://github.com/superseriousbusiness/gotosocial / https://docs.gotosocial.org
|
||||
https://codeberg.org/superseriousbusiness/gotosocial / https://docs.gotosocial.org
|
||||
|
||||
> Abstract: Can you explain the whole project and its expected outcome(s). (you have 1200 characters)
|
||||
|
||||
|
|
@ -87,8 +87,8 @@ Thirdly, we want to make GtS as customizable as possible by allowing admins to e
|
|||
|
||||
The main technical challenges we foresee on the project are:
|
||||
|
||||
1. Ensuring compatibility with other AP servers (see here: https://github.com/superseriousbusiness/gotosocial/projects/4).
|
||||
2. Ensuring compatibility with clients that use the Mastodon API (see here: https://github.com/superseriousbusiness/gotosocial/projects/5).
|
||||
1. Ensuring compatibility with other AP servers (see here: https://codeberg.org/superseriousbusiness/gotosocial/projects/4).
|
||||
2. Ensuring compatibility with clients that use the Mastodon API (see here: https://codeberg.org/superseriousbusiness/gotosocial/projects/5).
|
||||
3. Designing nuanced federation safety features that allow instance admins to screen federation without totally breaking it. This will require careful design discussions and lots of testing.
|
||||
4. Implementing our own open-source http signature library with a reference implementation of the latest draft of the http signature proposal: https://httpwg.org/http-extensions/draft-ietf-httpbis-message-signatures.html.
|
||||
5. Writing + maintaining our own extensions to the AP protocol (see below).
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ GoToSocial
|
|||
|
||||
> Website / wiki
|
||||
|
||||
https://github.com/superseriousbusiness/gotosocial / https://docs.gotosocial.org
|
||||
https://codeberg.org/superseriousbusiness/gotosocial / https://docs.gotosocial.org
|
||||
|
||||
> Abstract: Can you explain the whole project and its expected outcome(s). (you have 1200 characters)
|
||||
|
||||
|
|
@ -20,7 +20,7 @@ GtS emphasizes user safety and privacy. Unlike other AP servers, it always requi
|
|||
|
||||
GtS values ease of deployment and maintenance; this means low system requirements, simple configuration, minimal external dependencies, and clear documentation. GtS makes it easy + affordable for self-hosting newcomers to set up a Fediverse server on low- (or even solar-) powered equipment they might have lying around at home.
|
||||
|
||||
GtS began development in Feb 2021. It is still in Alpha, and we hope to use NLNet funding to bring it up to the Beta phase. The project roadmap (https://github.com/superseriousbusiness/gotosocial/blob/main/ROADMAP.md) gives more information on what we have planned.
|
||||
GtS began development in Feb 2021. It is still in Alpha, and we hope to use NLNet funding to bring it up to the Beta phase. The project roadmap (https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/ROADMAP.md) gives more information on what we have planned.
|
||||
|
||||
> Have you been involved with projects or organisations relevant to this project before? And if so, can you tell us a bit about your contributions? (Optional) This can help us determine if you are the right person to undertake this effort.
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ Aside from GoToSocial, I've also made small PRs upstream to the ActivityPub libr
|
|||
|
||||
Currently, GoToSocial receives about €22/week from LiberaPay donations - https://liberapay.com/gotosocial. I have been paying my own costs for working on the project from my savings, which is unfortunately not sustainable for a lot longer.
|
||||
|
||||
The requested NLNet budget will be used to fund the remaining Alpha portion of development, and bring GoToSocial into the Beta phase (see the roadmap - https://github.com/superseriousbusiness/gotosocial/blob/main/ROADMAP.md). In practical terms, this means paying myself to work full time on the project for one year, and paying for contributions from other developers as well.
|
||||
The requested NLNet budget will be used to fund the remaining Alpha portion of development, and bring GoToSocial into the Beta phase (see the roadmap - https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/ROADMAP.md). In practical terms, this means paying myself to work full time on the project for one year, and paying for contributions from other developers as well.
|
||||
|
||||
To pay my living costs + rent I need to make about €2,000/month after tax, working full time. In Belgium, that equates to about €3,000/month, which is €36,000 for one year of work. Naively calculated at 40 hours / week, that's €18.75 per hour.
|
||||
|
||||
|
|
@ -83,8 +83,8 @@ Thirdly, we want to make GtS as customizable as possible by allowing admins to e
|
|||
|
||||
The main technical challenges we foresee on the project are:
|
||||
|
||||
1. Ensuring compatibility with other AP servers (see here: https://github.com/superseriousbusiness/gotosocial/projects/4).
|
||||
2. Ensuring compatibility with clients that use the Mastodon API (see here: https://github.com/superseriousbusiness/gotosocial/projects/5).
|
||||
1. Ensuring compatibility with other AP servers (see here: https://codeberg.org/superseriousbusiness/gotosocial/projects/4).
|
||||
2. Ensuring compatibility with clients that use the Mastodon API (see here: https://codeberg.org/superseriousbusiness/gotosocial/projects/5).
|
||||
3. Designing nuanced federation safety features that allow instance admins to screen federation without totally breaking it. This will require careful design discussions and lots of testing.
|
||||
4. Implementing our own open-source http signature library with a reference implementation of the latest draft of the http signature proposal: https://httpwg.org/http-extensions/draft-ietf-httpbis-message-signatures.html.
|
||||
5. Writing + maintaining our own extensions to the AP protocol (see below).
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ GoToSocial
|
|||
|
||||
> Website / wiki
|
||||
|
||||
https://github.com/superseriousbusiness/gotosocial / https://docs.gotosocial.org
|
||||
https://codeberg.org/superseriousbusiness/gotosocial / https://docs.gotosocial.org
|
||||
|
||||
> Abstract: Can you explain the whole project and its expected outcome(s). (you have 1200 characters)
|
||||
|
||||
|
|
@ -106,13 +106,13 @@ Other technical challenges we will (continue to) address in the near future are
|
|||
Much of the work we do involves debugging and solving interoperability issues with other federated softwares, which requires keeping communication channels open with the maintainers of those, and figuring out who needs to change what in order for the issue to be resolved. We've done that a lot over the last year or so:
|
||||
|
||||
- Fixed interop with Bandwagon: https://github.com/EmissarySocial/bandwagon/issues/152
|
||||
- Fixed interop with Iceshrimp: https://github.com/superseriousbusiness/gotosocial/issues/1947
|
||||
- Coordinated interop with Mastodon: https://github.com/superseriousbusiness/gotosocial/pull/3703
|
||||
- Fixed federation with Gancio: https://github.com/superseriousbusiness/gotosocial/issues/3875
|
||||
- Fixed interop with Iceshrimp: https://codeberg.org/superseriousbusiness/gotosocial/issues/1947
|
||||
- Coordinated interop with Mastodon: https://codeberg.org/superseriousbusiness/gotosocial/pulls/3703
|
||||
- Fixed federation with Gancio: https://codeberg.org/superseriousbusiness/gotosocial/issues/3875
|
||||
- Alerted Pixelfed of AP serialization issues: https://github.com/pixelfed/pixelfed/issues/5642
|
||||
- Cajoled Bluesky into adding user-agent headers: https://github.com/bluesky-social/atproto/issues/3504
|
||||
- Help out Writefreely with http signature request issues: https://github.com/writefreely/writefreely/issues/661#issuecomment-1951367449
|
||||
- Debug federation with Lemmy along with one of the Lemmy devs: https://github.com/superseriousbusiness/gotosocial/issues/2697
|
||||
- Debug federation with Lemmy along with one of the Lemmy devs: https://codeberg.org/superseriousbusiness/gotosocial/issues/2697
|
||||
|
||||
For GoToSocial-specific extensions to ActivityPub, we've also diligently documented what we've done so far, and exposed a GoToSocial namespace so that remote softwares can easily incorporate GtS extensions if they want to: https://docs.gotosocial.org/en/latest/federation/interaction_policy/, https://gotosocial.org/ns.
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@
|
|||
|
||||
package main
|
||||
|
||||
import "github.com/superseriousbusiness/gotosocial/internal/id"
|
||||
import "code.superseriousbusiness.org/gotosocial/internal/id"
|
||||
|
||||
func main() { println(id.NewULID()) }
|
||||
|
|
|
|||
|
|
@ -24,14 +24,14 @@ import (
|
|||
"text/tabwriter"
|
||||
"time"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db/bundb"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/util"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/validate"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db/bundb"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/state"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/util"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/validate"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -25,14 +25,14 @@ import (
|
|||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db/bundb"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/paging"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db/bundb"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/paging"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/state"
|
||||
)
|
||||
|
||||
type list struct {
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@ package prune
|
|||
import (
|
||||
"context"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtscontext"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtscontext"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
)
|
||||
|
||||
// All performs all media clean actions
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/internal/cleaner"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db/bundb"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/media"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
gtsstorage "github.com/superseriousbusiness/gotosocial/internal/storage"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/cleaner"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db/bundb"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtserror"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/media"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/state"
|
||||
gtsstorage "code.superseriousbusiness.org/gotosocial/internal/storage"
|
||||
)
|
||||
|
||||
type prune struct {
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@ package prune
|
|||
import (
|
||||
"context"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtscontext"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtscontext"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
)
|
||||
|
||||
// Orphaned prunes orphaned media from storage.
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@ import (
|
|||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtscontext"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtscontext"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
)
|
||||
|
||||
// Remote prunes old and/or unused remote media.
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db/bundb"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/trans"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db/bundb"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/state"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/trans"
|
||||
)
|
||||
|
||||
// Export exports info from the database into a file
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db/bundb"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/trans"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db/bundb"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/state"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/trans"
|
||||
)
|
||||
|
||||
// Import imports info from a file into the database
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ import (
|
|||
"encoding/json"
|
||||
"os"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
)
|
||||
|
||||
// Config just prints the collated config out to stdout as json.
|
||||
|
|
|
|||
|
|
@ -30,43 +30,43 @@ import (
|
|||
"syscall"
|
||||
"time"
|
||||
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/admin"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/api"
|
||||
apiutil "code.superseriousbusiness.org/gotosocial/internal/api/util"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/cleaner"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db/bundb"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/email"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/federation"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/federation/federatingdb"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/filter/interaction"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/filter/spam"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/filter/visibility"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtserror"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/httpclient"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/media"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/media/ffmpeg"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/messages"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/middleware"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/oauth"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/oauth/handlers"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/observability"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/oidc"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/processing"
|
||||
tlprocessor "code.superseriousbusiness.org/gotosocial/internal/processing/timeline"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/router"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/state"
|
||||
gtsstorage "code.superseriousbusiness.org/gotosocial/internal/storage"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/subscriptions"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/timeline"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/transport"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/typeutils"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/web"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/webpush"
|
||||
"github.com/KimMachineGun/automemlimit/memlimit"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/admin"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api"
|
||||
apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/cleaner"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db/bundb"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/email"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/federation"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/federation/federatingdb"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/filter/interaction"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/filter/spam"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/filter/visibility"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/httpclient"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/media"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/media/ffmpeg"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/messages"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/middleware"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/oauth"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/oauth/handlers"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/observability"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/oidc"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/processing"
|
||||
tlprocessor "github.com/superseriousbusiness/gotosocial/internal/processing/timeline"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/router"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
gtsstorage "github.com/superseriousbusiness/gotosocial/internal/storage"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/subscriptions"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/timeline"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/transport"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/typeutils"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/web"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/webpush"
|
||||
"go.uber.org/automaxprocs/maxprocs"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
package testrig
|
||||
|
||||
import "github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
import "code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
|
||||
// Start creates and starts a gotosocial testrig server.
|
||||
// This is only enabled in debug builds, else is nil.
|
||||
|
|
|
|||
|
|
@ -28,29 +28,29 @@ import (
|
|||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/admin"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/api"
|
||||
apiutil "code.superseriousbusiness.org/gotosocial/internal/api/util"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/cleaner"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/filter/visibility"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtserror"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/language"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/middleware"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/observability"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/oidc"
|
||||
tlprocessor "code.superseriousbusiness.org/gotosocial/internal/processing/timeline"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/router"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/state"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/storage"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/subscriptions"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/timeline"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/typeutils"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/web"
|
||||
"code.superseriousbusiness.org/gotosocial/testrig"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/admin"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api"
|
||||
apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/cleaner"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/filter/visibility"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/language"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/middleware"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/observability"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/oidc"
|
||||
tlprocessor "github.com/superseriousbusiness/gotosocial/internal/processing/timeline"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/router"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/storage"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/subscriptions"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/timeline"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/typeutils"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/web"
|
||||
"github.com/superseriousbusiness/gotosocial/testrig"
|
||||
)
|
||||
|
||||
// Start creates and starts a gotosocial testrig server.
|
||||
|
|
|
|||
|
|
@ -18,12 +18,12 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action/admin/account"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action/admin/media"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action/admin/media/prune"
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action/admin/trans"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action/admin/account"
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action/admin/media"
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action/admin/media/prune"
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action/admin/trans"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
)
|
||||
|
||||
func adminCommands() *cobra.Command {
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
)
|
||||
|
||||
type preRunArgs struct {
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
configaction "code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action/debug/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"github.com/spf13/cobra"
|
||||
configaction "github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action/debug/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
)
|
||||
|
||||
func debugCommands() *cobra.Command {
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@ import (
|
|||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
_ "github.com/superseriousbusiness/gotosocial/docs"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
_ "code.superseriousbusiness.org/gotosocial/docs"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
)
|
||||
|
||||
// Version is the version of GoToSocial being used.
|
||||
|
|
@ -45,7 +45,7 @@ func main() {
|
|||
rootCmd := &cobra.Command{
|
||||
Use: "gotosocial",
|
||||
Short: "GoToSocial - a fediverse social media server",
|
||||
Long: "GoToSocial - a fediverse social media server\n\nFor help, see: https://docs.gotosocial.org.\n\nCode: https://github.com/superseriousbusiness/gotosocial",
|
||||
Long: "GoToSocial - a fediverse social media server\n\nFor help, see: https://docs.gotosocial.org.\n\nCode: https://codeberg.org/superseriousbusiness/gotosocial",
|
||||
Version: version,
|
||||
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
||||
// before running any other cmd funcs, we must load config-path
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action/server"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action/server"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
)
|
||||
|
||||
// serverCommands returns the 'server' subcommand
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"code.superseriousbusiness.org/gotosocial/cmd/gotosocial/action/testrig"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/superseriousbusiness/gotosocial/cmd/gotosocial/action/testrig"
|
||||
)
|
||||
|
||||
func testrigCommands() *cobra.Command {
|
||||
|
|
|
|||
|
|
@ -24,15 +24,15 @@ import (
|
|||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db/bundb"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/media"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/media/ffmpeg"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/state"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/storage"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/util"
|
||||
"codeberg.org/gruf/go-storage/memory"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db/bundb"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/media"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/media/ffmpeg"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/storage"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/util"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
|
|||
|
|
@ -27,15 +27,15 @@ import (
|
|||
"syscall"
|
||||
"time"
|
||||
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db/bundb"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/media"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/media/ffmpeg"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/state"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/storage"
|
||||
"codeberg.org/gruf/go-storage/memory"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db/bundb"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/media"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/media/ffmpeg"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/storage"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ hooks:
|
|||
|
||||
For PostgreSQL, you'll want to use `postgresql_databases` instead.
|
||||
|
||||
The file mentioned in `patterns_from` can be created by transforming the output from the GoToSocial CLI media [`list-attachments`](cli.md#gotosocial-admin-media-list-attachments) and [`list-emojis`](cli.md#gotosocial-admin-media-list-emojis) commands. In order to generate the right patterns you can use the [`media-to-borg-patterns.py`](https://github.com/superseriousbusiness/gotosocial/tree/main/example/borgmatic/media-to-borg-patterns.py) script. How Borg patterns work is explained in [their documentation](https://man.archlinux.org/man/borg-patterns.1).
|
||||
The file mentioned in `patterns_from` can be created by transforming the output from the GoToSocial CLI media [`list-attachments`](cli.md#gotosocial-admin-media-list-attachments) and [`list-emojis`](cli.md#gotosocial-admin-media-list-emojis) commands. In order to generate the right patterns you can use the [`media-to-borg-patterns.py`](https://codeberg.org/superseriousbusiness/gotosocial/tree/main/example/borgmatic/media-to-borg-patterns.py) script. How Borg patterns work is explained in [their documentation](https://man.archlinux.org/man/borg-patterns.1).
|
||||
|
||||
You'll need to put that file on your GoToSocial instance and make sure the file is executable. It requires Python 3 which you will already have if you have Borg and Borgmatic installed. It only depends on the Python standard library.
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ GoToSocial - a fediverse social media server
|
|||
|
||||
For help, see: https://docs.gotosocial.org.
|
||||
|
||||
Code: https://github.com/superseriousbusiness/gotosocial
|
||||
Code: https://codeberg.org/superseriousbusiness/gotosocial
|
||||
|
||||
Usage:
|
||||
gotosocial [command]
|
||||
|
|
@ -57,6 +57,9 @@ Contains `account`, `export`, `import`, and `media` subcommands.
|
|||
|
||||
This command can be used to create a new account on your instance.
|
||||
|
||||
!!! Warning
|
||||
You must have launched the server at least once before running this command, to initialize essential entries in the database.
|
||||
|
||||
`gotosocial admin account create --help`:
|
||||
|
||||
```text
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ Domain permission subscriptions make it possible to easily create allowlist-fede
|
|||
|
||||
For example, instances `instance-a.example.org`, `instance-b.example.org`, and `instance-c.example.org` decide that they only want to federate with each other.
|
||||
|
||||
Using some version management platform like GitHub, they host a plaintext-formatted allowlist at something like `https://raw.githubusercontent.com/our-cluster/allowlist/refs/heads/main/allows.txt`.
|
||||
Using some version management platform like Codeberg, they host a plaintext-formatted allowlist at something like `https://codeberg.org/our-cluster/allowlist/raw/branch/main/allows.txt`.
|
||||
|
||||
The contents of the plaintext-formatted allowlist are as follows:
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ instance-b.example.org
|
|||
instance-c.example.org
|
||||
```
|
||||
|
||||
Each instance admin sets their federation mode to `allowlist`, and creates a subscription to create allows from `https://raw.githubusercontent.com/our-cluster/allowlist/refs/heads/main/allows.txt`, which results in domain allow entries being created for their own domain, and for each other domain in the cluster.
|
||||
Each instance admin sets their federation mode to `allowlist`, and creates a subscription to create allows from `https://codeberg.org/our-cluster/allowlist/raw/branch/main/allows.txt`, which results in domain allow entries being created for their own domain, and for each other domain in the cluster.
|
||||
|
||||
At some point, someone from `instance-d.example.org` asks (out of band) whether they can be added to the cluster. The existing admins agree, and update their plaintext-formatted allowlist to read:
|
||||
|
||||
|
|
@ -66,7 +66,7 @@ Domain permission subscriptions make it easy to collaborate on and subscribe to
|
|||
|
||||
For example, the admins of instances `instance-e.example.org`, `instance-f.example.org`, and `instance-g.example.org` decide that they are tired of duplicating work by playing whack-a-mole with bad actors. To make their lives easier, they decide to collaborate on a shared blocklist.
|
||||
|
||||
Using some version management platform like GitHub, they host a blocklist at something like `https://raw.githubusercontent.com/baddies/blocklist/refs/heads/main/blocks.csv`.
|
||||
Using some version management platform like Codeberg, they host a blocklist at something like `https://codeberg.org/our-cluster/allowlist/raw/branch/main/blocks.csv`.
|
||||
|
||||
When someone discovers a new domain hosting an instance they don't like, they can open a pull request or similar against the list, to add the questionable instance to the domain.
|
||||
|
||||
|
|
|
|||
|
|
@ -31,13 +31,18 @@ When your instance encounters a mention or an announce of a status or account it
|
|||
|
||||
## Combining blocks and allows
|
||||
|
||||
It is possible to both block and allow the same domain, and the effect of combining these two things depends on which federation mode your instance is currently using.
|
||||
!!! danger
|
||||
Combining blocks and allows is a tricky business!
|
||||
|
||||
When importing lists of allows and blocks, you should always review the list manually to make sure that you do not inadvertently block a domain that you would prefer not to block, since this can have **very annoying side effects** like removing follows/following, statuses, etc.
|
||||
|
||||
When in doubt, always add an explicit allow first as an insurance policy!
|
||||
|
||||

|
||||
It is possible to both block and allow the same domain, and the effect of combining these two things depends on which federation mode your instance is currently using, as explained in the following subsections, which are summarised in a flowchart that you can find below.
|
||||
|
||||
### In blocklist mode
|
||||
|
||||
As the chart shows, in blocklist mode (the left-hand part of the diagram), an explicit domain allow can be used to override a domain block.
|
||||
As the chart below shows, in blocklist mode (the left-hand part of the diagram), an explicit domain allow can be used to override a domain block.
|
||||
|
||||
This is useful in cases where you are importing a blocklist from someone else, but the imported blocklist contains some instances you would actually prefer not to block. To avoid blocking those instances, you can create explicit domain allows for those instances first. Then, when you import the block list, the explicitly allowed domains will not be blocked, and the side effects of creating a block (deleting statuses, media, relationships etc) will not be processed.
|
||||
|
||||
|
|
@ -47,16 +52,11 @@ Conversely, if you add an explicit allow for a domain that was blocked, the side
|
|||
|
||||
### In allowlist mode
|
||||
|
||||
As the chart shows, in allowlist mode (the right-hand part of the diagram) an explicit domain block trumps an explicit domain allow. The following two things must be true in order for an instance to be allowed through, when running in allowlist mode:
|
||||
As the chart below shows, in allowlist mode (the right-hand part of the diagram) an explicit domain block trumps an explicit domain allow. The following two things must be true in order for an instance to be allowed through, when running in allowlist mode:
|
||||
|
||||
1. An explicit domain block **does not exist** for the instance.
|
||||
2. An explicit domain allow **does exist** for the instance.
|
||||
|
||||
If either of the above conditions are not met, the request will be denied.
|
||||
|
||||
!!! danger
|
||||
Combining blocks and allows is a tricky business!
|
||||
|
||||
When importing lists of allows and blocks, you should always review the list manually to make sure that you do not inadvertently block a domain that you would prefer not to block, since this can have **very annoying side effects** like removing follows/following, statuses, etc.
|
||||
|
||||
When in doubt, always add an explicit allow first as an insurance policy!
|
||||

|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ Different distributions have different sandboxing mechanisms they prefer and sup
|
|||
We ship an example AppArmor policy for GoToSocial, which you can retrieve and install as follows:
|
||||
|
||||
```sh
|
||||
$ curl -LO 'https://github.com/superseriousbusiness/gotosocial/raw/main/example/apparmor/gotosocial'
|
||||
$ curl -LO 'https://codeberg.org/superseriousbusiness/gotosocial/raw/main/example/apparmor/gotosocial'
|
||||
$ sudo install -o root -g root gotosocial /etc/apparmor.d/gotosocial
|
||||
$ sudo apparmor_parser -Kr /etc/apparmor.d/gotosocial
|
||||
```
|
||||
|
|
|
|||
|
|
@ -32,4 +32,4 @@ You'll need to update the following settings:
|
|||
* `db-sqlite-journal-mode`
|
||||
* `db-sqlite-synchronous`
|
||||
|
||||
We don't provide any recommendations as this will vary based on the solution you're using. See [this issue](https://github.com/superseriousbusiness/gotosocial/issues/3360#issuecomment-2380332027) for what you could potentially set those values to.
|
||||
We don't provide any recommendations as this will vary based on the solution you're using. See [this issue](https://codeberg.org/superseriousbusiness/gotosocial/issues/3360#issuecomment-2380332027) for what you could potentially set those values to.
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ tracing-insecure-transport: true
|
|||
[obs]: ../configuration/observability.md
|
||||
[tempo]: https://grafana.com/oss/tempo/
|
||||
[grafana]: https://grafana.com/oss/grafana/
|
||||
[ext]: https://github.com/superseriousbusiness/gotosocial/tree/main/example/tracing
|
||||
[ext]: https://codeberg.org/superseriousbusiness/gotosocial/tree/main/example/tracing
|
||||
|
||||
## Querying and visualising traces
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ Most of the GoToSocial API endpoints require a user-level OAuth token. For a gui
|
|||
|
||||
See the following issues for more context:
|
||||
|
||||
- [#1958](https://github.com/superseriousbusiness/gotosocial/issues/1958)
|
||||
- [#1944](https://github.com/superseriousbusiness/gotosocial/issues/1944)
|
||||
- [#2641](https://github.com/superseriousbusiness/gotosocial/issues/2641)
|
||||
- [#1958](https://codeberg.org/superseriousbusiness/gotosocial/issues/1958)
|
||||
- [#1944](https://codeberg.org/superseriousbusiness/gotosocial/issues/1944)
|
||||
- [#2641](https://codeberg.org/superseriousbusiness/gotosocial/issues/2641)
|
||||
|
||||
<swagger-ui src="swagger.yaml"/>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ definitions:
|
|||
FilterAction:
|
||||
title: FilterAction is the action to apply to statuses matching a filter.
|
||||
type: string
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
InstanceConfigurationEmojis:
|
||||
properties:
|
||||
emoji_size_limit:
|
||||
|
|
@ -14,7 +14,7 @@ definitions:
|
|||
x-go-name: EmojiSizeLimit
|
||||
title: InstanceConfigurationEmojis models instance emoji config parameters.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
Link:
|
||||
description: See https://webfinger.net/ and https://www.rfc-editor.org/rfc/rfc6415.html#section-3.1
|
||||
properties:
|
||||
|
|
@ -32,7 +32,7 @@ definitions:
|
|||
x-go-name: Type
|
||||
title: Link represents one 'link' in a slice of links returned from a lookup request.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
Mention:
|
||||
properties:
|
||||
acct:
|
||||
|
|
@ -59,7 +59,7 @@ definitions:
|
|||
x-go-name: Username
|
||||
title: Mention represents a mention of another account.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
NodeInfoServices:
|
||||
properties:
|
||||
inbound:
|
||||
|
|
@ -74,7 +74,7 @@ definitions:
|
|||
x-go-name: Outbound
|
||||
title: NodeInfoServices represents inbound and outbound services that this node offers connections to.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
NodeInfoSoftware:
|
||||
properties:
|
||||
homepage:
|
||||
|
|
@ -97,7 +97,7 @@ definitions:
|
|||
x-go-name: Version
|
||||
title: NodeInfoSoftware represents the name and version number of the software of this node.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
NodeInfoUsage:
|
||||
properties:
|
||||
localComments:
|
||||
|
|
@ -112,7 +112,7 @@ definitions:
|
|||
$ref: '#/definitions/NodeInfoUsers'
|
||||
title: NodeInfoUsage represents usage information about this server, such as number of users.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
NodeInfoUsers:
|
||||
properties:
|
||||
activeHalfYear:
|
||||
|
|
@ -129,7 +129,7 @@ definitions:
|
|||
x-go-name: Total
|
||||
title: NodeInfoUsers represents aggregate information about the users on the server.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
Source:
|
||||
description: Returned as an additional entity when verifying and updated credentials, as an attribute of Account.
|
||||
properties:
|
||||
|
|
@ -196,7 +196,7 @@ definitions:
|
|||
x-go-name: WebVisibility
|
||||
title: Source represents display or publishing preferences of user's own account.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
TimelineMarker:
|
||||
properties:
|
||||
last_read_id:
|
||||
|
|
@ -214,11 +214,11 @@ definitions:
|
|||
x-go-name: Version
|
||||
title: TimelineMarker contains information about a user's progress through a specific timeline.
|
||||
type: object
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
WebPushNotificationPolicy:
|
||||
title: WebPushNotificationPolicy names sets of accounts that can generate notifications.
|
||||
type: string
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
account:
|
||||
description: The modelled account can be either a remote account, or one on this instance.
|
||||
properties:
|
||||
|
|
@ -400,7 +400,7 @@ definitions:
|
|||
title: Account models a fediverse account.
|
||||
type: object
|
||||
x-go-name: Account
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
accountDisplayRole:
|
||||
description: This is a subset of AccountRole.
|
||||
properties:
|
||||
|
|
@ -423,7 +423,7 @@ definitions:
|
|||
title: AccountDisplayRole models a public, displayable role of an account.
|
||||
type: object
|
||||
x-go-name: AccountDisplayRole
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
accountExportStats:
|
||||
description: |-
|
||||
AccountExportStats models an account's stats
|
||||
|
|
@ -473,7 +473,7 @@ definitions:
|
|||
x-go-name: StatusesCount
|
||||
type: object
|
||||
x-go-name: AccountExportStats
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
accountRelationship:
|
||||
properties:
|
||||
blocked_by:
|
||||
|
|
@ -536,7 +536,7 @@ definitions:
|
|||
title: Relationship represents a relationship between accounts.
|
||||
type: object
|
||||
x-go-name: Relationship
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
accountRole:
|
||||
properties:
|
||||
color:
|
||||
|
|
@ -568,7 +568,7 @@ definitions:
|
|||
title: AccountRole models the role of an account.
|
||||
type: object
|
||||
x-go-name: AccountRole
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
adminAccountInfo:
|
||||
properties:
|
||||
account:
|
||||
|
|
@ -663,7 +663,7 @@ definitions:
|
|||
title: AdminAccountInfo models the admin view of an account's details.
|
||||
type: object
|
||||
x-go-name: AdminAccountInfo
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
adminActionResponse:
|
||||
description: |-
|
||||
AdminActionResponse models the server
|
||||
|
|
@ -676,7 +676,7 @@ definitions:
|
|||
x-go-name: ActionID
|
||||
type: object
|
||||
x-go-name: AdminActionResponse
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
adminEmoji:
|
||||
properties:
|
||||
category:
|
||||
|
|
@ -743,7 +743,7 @@ definitions:
|
|||
title: AdminEmoji models the admin view of a custom emoji.
|
||||
type: object
|
||||
x-go-name: AdminEmoji
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
adminReport:
|
||||
properties:
|
||||
account:
|
||||
|
|
@ -824,7 +824,7 @@ definitions:
|
|||
title: AdminReport models the admin view of a report.
|
||||
type: object
|
||||
x-go-name: AdminReport
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
application:
|
||||
properties:
|
||||
client_id:
|
||||
|
|
@ -880,7 +880,7 @@ definitions:
|
|||
title: Application models an api application.
|
||||
type: object
|
||||
x-go-name: Application
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
attachment:
|
||||
properties:
|
||||
blurhash:
|
||||
|
|
@ -939,7 +939,7 @@ definitions:
|
|||
title: Attachment models a media attachment.
|
||||
type: object
|
||||
x-go-name: Attachment
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
card:
|
||||
properties:
|
||||
author_name:
|
||||
|
|
@ -1012,7 +1012,7 @@ definitions:
|
|||
title: Card represents a rich preview card that is generated using OpenGraph tags from a URL.
|
||||
type: object
|
||||
x-go-name: Card
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
conversation:
|
||||
description: |-
|
||||
Conversation represents a conversation
|
||||
|
|
@ -1041,7 +1041,7 @@ definitions:
|
|||
x-go-name: Unread
|
||||
type: object
|
||||
x-go-name: Conversation
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
debugAPUrlResponse:
|
||||
description: |-
|
||||
DebugAPUrlResponse provides detailed debug
|
||||
|
|
@ -1081,7 +1081,7 @@ definitions:
|
|||
x-go-name: ResponseHeaders
|
||||
type: object
|
||||
x-go-name: DebugAPUrlResponse
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
defaultPolicies:
|
||||
properties:
|
||||
direct:
|
||||
|
|
@ -1095,7 +1095,7 @@ definitions:
|
|||
title: Default interaction policies to use for new statuses by requesting account.
|
||||
type: object
|
||||
x-go-name: DefaultPolicies
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
domain:
|
||||
description: Domain represents a remote domain
|
||||
properties:
|
||||
|
|
@ -1130,7 +1130,7 @@ definitions:
|
|||
x-go-name: SuspendedAt
|
||||
type: object
|
||||
x-go-name: Domain
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
domainPermission:
|
||||
properties:
|
||||
comment:
|
||||
|
|
@ -1202,7 +1202,7 @@ definitions:
|
|||
title: DomainPermission represents a permission applied to one domain (explicit block/allow).
|
||||
type: object
|
||||
x-go-name: DomainPermission
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
domainPermissionSubscription:
|
||||
properties:
|
||||
adopt_orphans:
|
||||
|
|
@ -1296,7 +1296,7 @@ definitions:
|
|||
title: DomainPermissionSubscription represents an auto-refreshing subscription to a list of domain permissions (allows, blocks).
|
||||
type: object
|
||||
x-go-name: DomainPermissionSubscription
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
emoji:
|
||||
properties:
|
||||
category:
|
||||
|
|
@ -1327,7 +1327,7 @@ definitions:
|
|||
title: Emoji represents a custom emoji.
|
||||
type: object
|
||||
x-go-name: Emoji
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
emojiCategory:
|
||||
properties:
|
||||
id:
|
||||
|
|
@ -1341,7 +1341,7 @@ definitions:
|
|||
title: EmojiCategory represents a custom emoji category.
|
||||
type: object
|
||||
x-go-name: EmojiCategory
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
field:
|
||||
properties:
|
||||
name:
|
||||
|
|
@ -1362,13 +1362,13 @@ definitions:
|
|||
title: Field represents a name/value pair to display on an account's profile.
|
||||
type: object
|
||||
x-go-name: Field
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
filterContext:
|
||||
description: v1 and v2 filter APIs use the same set of contexts.
|
||||
title: FilterContext represents the context in which to apply a filter.
|
||||
type: string
|
||||
x-go-name: FilterContext
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
filterKeyword:
|
||||
properties:
|
||||
id:
|
||||
|
|
@ -1388,7 +1388,7 @@ definitions:
|
|||
title: FilterKeyword represents text to filter within a v2 filter.
|
||||
type: object
|
||||
x-go-name: FilterKeyword
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
filterResult:
|
||||
properties:
|
||||
filter:
|
||||
|
|
@ -1408,7 +1408,7 @@ definitions:
|
|||
title: FilterResult is returned along with a filtered status to explain why it was filtered.
|
||||
type: object
|
||||
x-go-name: FilterResult
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
filterStatus:
|
||||
properties:
|
||||
id:
|
||||
|
|
@ -1422,7 +1422,7 @@ definitions:
|
|||
title: FilterStatus represents a single status to filter within a v2 filter.
|
||||
type: object
|
||||
x-go-name: FilterStatus
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
filterV1:
|
||||
description: |-
|
||||
Note that v1 filters are mapped to v2 filters and v2 filter keywords internally.
|
||||
|
|
@ -1471,7 +1471,7 @@ definitions:
|
|||
title: FilterV1 represents a user-defined filter for determining which statuses should not be shown to the user.
|
||||
type: object
|
||||
x-go-name: FilterV1
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
filterV2:
|
||||
description: v2 filters have names and can include multiple phrases and status IDs to filter.
|
||||
properties:
|
||||
|
|
@ -1517,7 +1517,7 @@ definitions:
|
|||
title: FilterV2 represents a user-defined filter for determining which statuses should not be shown to the user.
|
||||
type: object
|
||||
x-go-name: FilterV2
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
headerFilter:
|
||||
properties:
|
||||
created_at:
|
||||
|
|
@ -1551,7 +1551,7 @@ definitions:
|
|||
title: HeaderFilter represents a regex value filter applied to one particular HTTP header (allow / block).
|
||||
type: object
|
||||
x-go-name: HeaderFilter
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
hostmeta:
|
||||
description: 'See: https://www.rfc-editor.org/rfc/rfc6415.html#section-3'
|
||||
properties:
|
||||
|
|
@ -1565,7 +1565,7 @@ definitions:
|
|||
title: HostMeta represents a hostmeta document.
|
||||
type: object
|
||||
x-go-name: HostMeta
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceConfigurationAccounts:
|
||||
properties:
|
||||
allow_custom_css:
|
||||
|
|
@ -1583,14 +1583,14 @@ definitions:
|
|||
max_profile_fields:
|
||||
description: |-
|
||||
The maximum number of profile fields allowed for each account.
|
||||
Currently not configurable, so this is hardcoded to 6. (https://github.com/superseriousbusiness/gotosocial/issues/1876)
|
||||
Currently not configurable, so this is hardcoded to 6. (https://codeberg.org/superseriousbusiness/gotosocial/issues/1876)
|
||||
format: int64
|
||||
type: integer
|
||||
x-go-name: MaxProfileFields
|
||||
title: InstanceConfigurationAccounts models instance account config parameters.
|
||||
type: object
|
||||
x-go-name: InstanceConfigurationAccounts
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceConfigurationMediaAttachments:
|
||||
properties:
|
||||
image_matrix_limit:
|
||||
|
|
@ -1643,7 +1643,7 @@ definitions:
|
|||
title: InstanceConfigurationMediaAttachments models instance media attachment config parameters.
|
||||
type: object
|
||||
x-go-name: InstanceConfigurationMediaAttachments
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceConfigurationPolls:
|
||||
properties:
|
||||
max_characters_per_option:
|
||||
|
|
@ -1673,7 +1673,7 @@ definitions:
|
|||
title: InstanceConfigurationPolls models instance poll config parameters.
|
||||
type: object
|
||||
x-go-name: InstanceConfigurationPolls
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceConfigurationStatuses:
|
||||
properties:
|
||||
characters_reserved_per_url:
|
||||
|
|
@ -1706,7 +1706,7 @@ definitions:
|
|||
title: InstanceConfigurationStatuses models instance status config parameters.
|
||||
type: object
|
||||
x-go-name: InstanceConfigurationStatuses
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceRule:
|
||||
properties:
|
||||
id:
|
||||
|
|
@ -1718,7 +1718,7 @@ definitions:
|
|||
title: InstanceRule represents a single instance rule.
|
||||
type: object
|
||||
x-go-name: InstanceRule
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV1:
|
||||
properties:
|
||||
account_domain:
|
||||
|
|
@ -1875,7 +1875,7 @@ definitions:
|
|||
title: InstanceV1 models information about this instance.
|
||||
type: object
|
||||
x-go-name: InstanceV1
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV1Configuration:
|
||||
properties:
|
||||
accounts:
|
||||
|
|
@ -1895,7 +1895,7 @@ definitions:
|
|||
title: InstanceV1Configuration models instance configuration parameters.
|
||||
type: object
|
||||
x-go-name: InstanceV1Configuration
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV1URLs:
|
||||
properties:
|
||||
streaming_api:
|
||||
|
|
@ -1906,7 +1906,7 @@ definitions:
|
|||
title: InstanceV1URLs models instance-relevant URLs for client application consumption.
|
||||
type: object
|
||||
x-go-name: InstanceV1URLs
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2:
|
||||
properties:
|
||||
account_domain:
|
||||
|
|
@ -1965,7 +1965,7 @@ definitions:
|
|||
x-go-name: Rules
|
||||
source_url:
|
||||
description: The URL for the source code of the software running on this instance, in keeping with AGPL license requirements.
|
||||
example: https://github.com/superseriousbusiness/gotosocial
|
||||
example: https://codeberg.org/superseriousbusiness/gotosocial
|
||||
type: string
|
||||
x-go-name: SourceURL
|
||||
terms:
|
||||
|
|
@ -1998,7 +1998,7 @@ definitions:
|
|||
title: InstanceV2 models information about this instance.
|
||||
type: object
|
||||
x-go-name: InstanceV2
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2Configuration:
|
||||
properties:
|
||||
accounts:
|
||||
|
|
@ -2024,7 +2024,7 @@ definitions:
|
|||
title: Configured values and limits for this instance.
|
||||
type: object
|
||||
x-go-name: InstanceV2Configuration
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2ConfigurationTranslation:
|
||||
properties:
|
||||
enabled:
|
||||
|
|
@ -2036,7 +2036,7 @@ definitions:
|
|||
title: Hints related to translation.
|
||||
type: object
|
||||
x-go-name: InstanceV2ConfigurationTranslation
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2ConfigurationVAPID:
|
||||
properties:
|
||||
public_key:
|
||||
|
|
@ -2046,7 +2046,7 @@ definitions:
|
|||
title: InstanceV2ConfigurationVAPID holds the instance's VAPID configuration.
|
||||
type: object
|
||||
x-go-name: InstanceV2ConfigurationVAPID
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2Contact:
|
||||
properties:
|
||||
account:
|
||||
|
|
@ -2061,7 +2061,7 @@ definitions:
|
|||
title: Hints related to contacting a representative of the instance.
|
||||
type: object
|
||||
x-go-name: InstanceV2Contact
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2Registrations:
|
||||
properties:
|
||||
approval_required:
|
||||
|
|
@ -2084,7 +2084,7 @@ definitions:
|
|||
title: Information about registering for this instance.
|
||||
type: object
|
||||
x-go-name: InstanceV2Registrations
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2Thumbnail:
|
||||
properties:
|
||||
blurhash:
|
||||
|
|
@ -2130,7 +2130,7 @@ definitions:
|
|||
title: An image used to represent this instance.
|
||||
type: object
|
||||
x-go-name: InstanceV2Thumbnail
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2ThumbnailVersions:
|
||||
properties:
|
||||
'@1x':
|
||||
|
|
@ -2148,7 +2148,7 @@ definitions:
|
|||
title: Links to scaled resolution images, for high DPI screens.
|
||||
type: object
|
||||
x-go-name: InstanceV2ThumbnailVersions
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2URLs:
|
||||
properties:
|
||||
streaming:
|
||||
|
|
@ -2159,7 +2159,7 @@ definitions:
|
|||
title: InstanceV2URLs models instance-relevant URLs for client application consumption.
|
||||
type: object
|
||||
x-go-name: InstanceV2URLs
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2Usage:
|
||||
properties:
|
||||
users:
|
||||
|
|
@ -2167,7 +2167,7 @@ definitions:
|
|||
title: Usage data for this instance.
|
||||
type: object
|
||||
x-go-name: InstanceV2Usage
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
instanceV2Users:
|
||||
properties:
|
||||
active_month:
|
||||
|
|
@ -2181,7 +2181,7 @@ definitions:
|
|||
title: Usage data related to users on this instance.
|
||||
type: object
|
||||
x-go-name: InstanceV2Users
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
interactionPolicy:
|
||||
properties:
|
||||
can_favourite:
|
||||
|
|
@ -2193,7 +2193,7 @@ definitions:
|
|||
title: Interaction policy of a status.
|
||||
type: object
|
||||
x-go-name: InteractionPolicy
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
interactionPolicyRules:
|
||||
properties:
|
||||
always:
|
||||
|
|
@ -2211,7 +2211,7 @@ definitions:
|
|||
title: Rules for one interaction type.
|
||||
type: object
|
||||
x-go-name: PolicyRules
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
interactionPolicyValue:
|
||||
description: |-
|
||||
It can be EITHER one of the internal keywords listed below, OR a full-fledged ActivityPub URI of an Actor, like "https://example.org/users/some_user".
|
||||
|
|
@ -2228,7 +2228,7 @@ definitions:
|
|||
title: One interaction policy entry for a status.
|
||||
type: string
|
||||
x-go-name: PolicyValue
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
interactionRequest:
|
||||
properties:
|
||||
accepted_at:
|
||||
|
|
@ -2269,7 +2269,7 @@ definitions:
|
|||
title: InteractionRequest represents a pending, approved, or rejected interaction of type favourite, reply, or reblog.
|
||||
type: object
|
||||
x-go-name: InteractionRequest
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
list:
|
||||
properties:
|
||||
exclusive:
|
||||
|
|
@ -2297,7 +2297,7 @@ definitions:
|
|||
title: List represents a user-created list of accounts that the user follows.
|
||||
type: object
|
||||
x-go-name: List
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
markers:
|
||||
properties:
|
||||
home:
|
||||
|
|
@ -2307,7 +2307,7 @@ definitions:
|
|||
title: Marker represents the last read position within a user's timelines.
|
||||
type: object
|
||||
x-go-name: Marker
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
mediaDimensions:
|
||||
properties:
|
||||
aspect:
|
||||
|
|
@ -2365,7 +2365,7 @@ definitions:
|
|||
title: MediaDimensions models detailed properties of a piece of media.
|
||||
type: object
|
||||
x-go-name: MediaDimensions
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
mediaFocus:
|
||||
properties:
|
||||
x:
|
||||
|
|
@ -2385,7 +2385,7 @@ definitions:
|
|||
title: MediaFocus models the focal point of a piece of media.
|
||||
type: object
|
||||
x-go-name: MediaFocus
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
mediaMeta:
|
||||
description: This can be metadata about an image, an audio file, video, etc.
|
||||
properties:
|
||||
|
|
@ -2398,7 +2398,7 @@ definitions:
|
|||
title: MediaMeta models media metadata.
|
||||
type: object
|
||||
x-go-name: MediaMeta
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
mutedAccount:
|
||||
properties:
|
||||
acct:
|
||||
|
|
@ -2586,7 +2586,7 @@ definitions:
|
|||
title: MutedAccount extends Account with a field used only by the muted user list.
|
||||
type: object
|
||||
x-go-name: MutedAccount
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
nodeinfo:
|
||||
description: 'See: https://nodeinfo.diaspora.software/schema.html'
|
||||
properties:
|
||||
|
|
@ -2620,7 +2620,7 @@ definitions:
|
|||
title: Nodeinfo represents a version 2.1 or version 2.0 nodeinfo schema.
|
||||
type: object
|
||||
x-go-name: Nodeinfo
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
notification:
|
||||
properties:
|
||||
account:
|
||||
|
|
@ -2651,7 +2651,7 @@ definitions:
|
|||
title: Notification represents a notification of an event relevant to the user.
|
||||
type: object
|
||||
x-go-name: Notification
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
oauthToken:
|
||||
properties:
|
||||
access_token:
|
||||
|
|
@ -2677,7 +2677,7 @@ definitions:
|
|||
title: Token represents an OAuth token used for authenticating with the GoToSocial API and performing actions.
|
||||
type: object
|
||||
x-go-name: Token
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
poll:
|
||||
properties:
|
||||
emojis:
|
||||
|
|
@ -2740,7 +2740,7 @@ definitions:
|
|||
title: Poll represents a poll attached to a status.
|
||||
type: object
|
||||
x-go-name: Poll
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
pollOption:
|
||||
properties:
|
||||
title:
|
||||
|
|
@ -2755,7 +2755,7 @@ definitions:
|
|||
title: PollOption represents the current vote counts for different poll options.
|
||||
type: object
|
||||
x-go-name: PollOption
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
report:
|
||||
properties:
|
||||
action_taken:
|
||||
|
|
@ -2831,7 +2831,7 @@ definitions:
|
|||
title: Report models a moderation report submitted to the instance, either via the client API or via the federated API.
|
||||
type: object
|
||||
x-go-name: Report
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
searchResult:
|
||||
properties:
|
||||
accounts:
|
||||
|
|
@ -2852,7 +2852,7 @@ definitions:
|
|||
title: SearchResult models a search result.
|
||||
type: object
|
||||
x-go-name: SearchResult
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
status:
|
||||
properties:
|
||||
account:
|
||||
|
|
@ -3015,7 +3015,7 @@ definitions:
|
|||
title: Status models a status or post.
|
||||
type: object
|
||||
x-go-name: Status
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
statusEdit:
|
||||
description: |-
|
||||
StatusEdit represents one historical revision of a status, containing
|
||||
|
|
@ -3061,7 +3061,7 @@ definitions:
|
|||
x-go-name: SpoilerText
|
||||
type: object
|
||||
x-go-name: StatusEdit
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
statusReblogged:
|
||||
properties:
|
||||
account:
|
||||
|
|
@ -3224,7 +3224,7 @@ definitions:
|
|||
title: StatusReblogged represents a reblogged status.
|
||||
type: object
|
||||
x-go-name: StatusReblogged
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
statusSource:
|
||||
description: |-
|
||||
StatusSource represents the source text of a
|
||||
|
|
@ -3249,7 +3249,7 @@ definitions:
|
|||
x-go-name: Text
|
||||
type: object
|
||||
x-go-name: StatusSource
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
swaggerCollection:
|
||||
properties:
|
||||
'@context':
|
||||
|
|
@ -3276,7 +3276,7 @@ definitions:
|
|||
title: SwaggerCollection represents an ActivityPub Collection.
|
||||
type: object
|
||||
x-go-name: SwaggerCollection
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/activitypub/users
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/activitypub/users
|
||||
swaggerCollectionPage:
|
||||
properties:
|
||||
id:
|
||||
|
|
@ -3311,7 +3311,7 @@ definitions:
|
|||
title: SwaggerCollectionPage represents one page of a collection.
|
||||
type: object
|
||||
x-go-name: SwaggerCollectionPage
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/activitypub/users
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/activitypub/users
|
||||
swaggerFeaturedCollection:
|
||||
properties:
|
||||
'@context':
|
||||
|
|
@ -3348,7 +3348,7 @@ definitions:
|
|||
title: SwaggerFeaturedCollection represents an ActivityPub OrderedCollection.
|
||||
type: object
|
||||
x-go-name: SwaggerFeaturedCollection
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/activitypub/users
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/activitypub/users
|
||||
tag:
|
||||
properties:
|
||||
following:
|
||||
|
|
@ -3378,7 +3378,7 @@ definitions:
|
|||
title: Tag represents a hashtag used within the content of a status.
|
||||
type: object
|
||||
x-go-name: Tag
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
theme:
|
||||
properties:
|
||||
description:
|
||||
|
|
@ -3396,7 +3396,7 @@ definitions:
|
|||
title: Theme represents one user-selectable preset CSS theme.
|
||||
type: object
|
||||
x-go-name: Theme
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
threadContext:
|
||||
description: |-
|
||||
ThreadContext models the tree or
|
||||
|
|
@ -3416,7 +3416,7 @@ definitions:
|
|||
x-go-name: Descendants
|
||||
type: object
|
||||
x-go-name: ThreadContext
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
tokenInfo:
|
||||
description: The actual access token itself will never be sent via the API.
|
||||
properties:
|
||||
|
|
@ -3447,7 +3447,7 @@ definitions:
|
|||
title: TokenInfo represents metadata about one user-level access token.
|
||||
type: object
|
||||
x-go-name: TokenInfo
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
user:
|
||||
properties:
|
||||
admin:
|
||||
|
|
@ -3523,7 +3523,7 @@ definitions:
|
|||
title: User models fields relevant to one user.
|
||||
type: object
|
||||
x-go-name: User
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
webPushNotification:
|
||||
description: |-
|
||||
It does not contain an entire Notification, just the NotificationID and some preview information.
|
||||
|
|
@ -3570,7 +3570,7 @@ definitions:
|
|||
title: WebPushNotification represents a notification summary delivered to the client by the Web Push server.
|
||||
type: object
|
||||
x-go-name: WebPushNotification
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
webPushSubscription:
|
||||
properties:
|
||||
alerts:
|
||||
|
|
@ -3598,7 +3598,7 @@ definitions:
|
|||
title: WebPushSubscription represents a subscription to a Web Push server.
|
||||
type: object
|
||||
x-go-name: WebPushSubscription
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
webPushSubscriptionAlerts:
|
||||
properties:
|
||||
admin.report:
|
||||
|
|
@ -3656,7 +3656,7 @@ definitions:
|
|||
title: WebPushSubscriptionAlerts represents the specific events that this Web Push subscription will receive.
|
||||
type: object
|
||||
x-go-name: WebPushSubscriptionAlerts
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
wellKnownResponse:
|
||||
description: See https://webfinger.net/
|
||||
properties:
|
||||
|
|
@ -3678,7 +3678,7 @@ definitions:
|
|||
For example, it would be returned from https://example.org/.well-known/webfinger?resource=acct:some_username@example.org
|
||||
type: object
|
||||
x-go-name: WellKnownResponse
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
|
||||
host: example.org
|
||||
info:
|
||||
contact:
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ create user gotosocial with password 'some_really_good_password';
|
|||
grant all privileges on database gotosocial to gotosocial;
|
||||
```
|
||||
|
||||
If you start using Postgres after 14, or you encounter `error executing command: error creating dbservice: db migration error: ERROR: permission denied for schema public`, you should grant `CREATE` permission to your db user:
|
||||
If you start using Postgres after 14, or you encounter `error executing command: error creating dbservice: db migration error: ERROR: permission denied for schema public`, you should grant `CREATE` permission to your db user *(This **must** be run in a postgres shell that's connected to the gotosocial database)*:
|
||||
|
||||
```psql
|
||||
GRANT CREATE ON SCHEMA public TO gotosocial;
|
||||
|
|
@ -146,7 +146,7 @@ db-tls-ca-cert: ""
|
|||
#
|
||||
# PLEASE NOTE!!: This setting currently only applies for Postgres. SQLite will always use 1 connection regardless
|
||||
# of what is set here. This behavior will change in future when we implement better SQLITE_BUSY handling.
|
||||
# See https://github.com/superseriousbusiness/gotosocial/issues/1407 for more details.
|
||||
# See https://codeberg.org/superseriousbusiness/gotosocial/issues/1407 for more details.
|
||||
#
|
||||
# Examples: [16, 8, 10, 2]
|
||||
# Default: 8
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ gotosocial --config-path ./config.yaml server start
|
|||
|
||||
The command expects a file in [YAML](https://en.wikipedia.org/wiki/YAML) or [JSON](https://en.wikipedia.org/wiki/JSON) format.
|
||||
|
||||
An example configuration file, with an explanation of each of the config fields, with default and example values, can be found [here](https://github.com/superseriousbusiness/gotosocial/blob/main/example/config.yaml). This example file is also included in release downloads.
|
||||
An example configuration file, with an explanation of each of the config fields, with default and example values, can be found [here](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/example/config.yaml). This example file is also included in release downloads.
|
||||
|
||||
It's recommended to create your own configuration file with only the settings you need to change for your installation. This ensures you don't have to reconcile changes to defaults or adding/updating/removing settings from your configuration file that you haven't changed away from the defaults on every release.
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ This means in cases where you want to just try changing one thing, but don't wan
|
|||
|
||||
Reasonable default values are provided for *most* of the configuration parameters, except in cases where a custom value is absolutely required.
|
||||
|
||||
See the [example config file](https://github.com/superseriousbusiness/gotosocial/blob/main/example/config.yaml) for the default values, or run `gotosocial --help`.
|
||||
See the [example config file](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/example/config.yaml) for the default values, or run `gotosocial --help`.
|
||||
|
||||
## `GTS_WAZERO_COMPILATION_CACHE`
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ To speed up startup time of GoToSocial, you can cache the compiled modules betwe
|
|||
|
||||
You can instruct GoToSocial on where to store the Wazero artifacts by setting the environment variable `GTS_WAZERO_COMPILATION_CACHE` to a directory, which will be used by GtS to store two smallish artifacts of ~50MiB or so each (~100MiB total).
|
||||
|
||||
For an example of this in action, see the [docker-compose.yaml](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/docker-compose/docker-compose.yaml), and the [gotosocial.service](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/gotosocial.service) example files.
|
||||
For an example of this in action, see the [docker-compose.yaml](https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/docker-compose/docker-compose.yaml), and the [gotosocial.service](https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/gotosocial.service) example files.
|
||||
|
||||
If you want to provide this value to GtS outside of systemd or Docker, you can do so in the following manner when starting up your GtS server:
|
||||
|
||||
|
|
|
|||
|
|
@ -38,4 +38,4 @@ We introduced a sign-up flow in v0.16.0. The server you want to sign up to must
|
|||
|
||||
## Why's it still in Beta?
|
||||
|
||||
Take a look at the [list of open bugs](https://github.com/superseriousbusiness/gotosocial/issues?q=is%3Aissue+is%3Aopen+label%3Abug) and the [roadmap](https://github.com/superseriousbusiness/gotosocial/blob/main/ROADMAP.md) for a more detailed rundown.
|
||||
Take a look at the [list of open bugs](https://codeberg.org/superseriousbusiness/gotosocial/issues?q=is%3Aissue+is%3Aopen+label%3Abug) and the [roadmap](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/ROADMAP.md) for a more detailed rundown.
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@ When sending a request, GtS will attempt first *with* query parameters included.
|
|||
|
||||
When receiving a request, GtS will attempt to validate the signature first *with* query parameters included. If the signature fails to validate, it will reattempt validation without query parameters included.
|
||||
|
||||
See [#894](https://github.com/superseriousbusiness/gotosocial/issues/894) for more details.
|
||||
See [#894](https://codeberg.org/superseriousbusiness/gotosocial/issues/894) for more details.
|
||||
|
||||
## Incoming Requests
|
||||
|
||||
GoToSocial request signature validation is implemented in [internal/federation](https://github.com/superseriousbusiness/gotosocial/blob/main/internal/federation/authenticate.go).
|
||||
GoToSocial request signature validation is implemented in [internal/federation](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/internal/federation/authenticate.go).
|
||||
|
||||
GoToSocial will attempt to parse the signature using the following algorithms (in order), stopping at the first success:
|
||||
|
||||
|
|
@ -36,9 +36,9 @@ ED25519
|
|||
|
||||
## Outgoing Requests
|
||||
|
||||
GoToSocial request signing is implemented in [internal/transport](https://github.com/superseriousbusiness/gotosocial/blob/main/internal/transport/signing.go).
|
||||
GoToSocial request signing is implemented in [internal/transport](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/internal/transport/signing.go).
|
||||
|
||||
Once https://github.com/superseriousbusiness/gotosocial/issues/2991 is resolved, GoToSocial will use the `(created)` pseudo-header instead of `date`.
|
||||
Once https://codeberg.org/superseriousbusiness/gotosocial/issues/2991 is resolved, GoToSocial will use the `(created)` pseudo-header instead of `date`.
|
||||
|
||||
For now however, when assembling signatures:
|
||||
|
||||
|
|
@ -82,4 +82,4 @@ For Mastodon, the public key of a user is served as part of that user's Actor re
|
|||
|
||||
Remote servers federating with GoToSocial should extract the public key from the `publicKey` field. Then, they should use the `owner` field of the public key to further dereference the full version of the Actor, using a signed `GET` request.
|
||||
|
||||
This behavior was introduced as a way of avoiding having remote servers make unsigned `GET` requests to the full Actor endpoint. However, this may change in future as it is not compliant and causes issues. Tracked in [this issue](https://github.com/superseriousbusiness/gotosocial/issues/1186).
|
||||
This behavior was introduced as a way of avoiding having remote servers make unsigned `GET` requests to the full Actor endpoint. However, this may change in future as it is not compliant and causes issues. Tracked in [this issue](https://codeberg.org/superseriousbusiness/gotosocial/issues/1186).
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ If you decide to use a VPS instead, you can spin yourself up something cheap wit
|
|||
!!! warning "Cloud storage volumes"
|
||||
Not all cloud VPS storage offerings are equal, and just because something claims to be backed by an SSD doesn't mean that it will necessarily be suitable to run a GoToSocial instance.
|
||||
|
||||
The [performance of Hetzner Cloud Volumes](https://github.com/superseriousbusiness/gotosocial/issues/2471#issuecomment-1891098323) is not guaranteed and seems to have very volatile latency. This will result in your GoToSocial instance performing poorly.
|
||||
The [performance of Hetzner Cloud Volumes](https://codeberg.org/superseriousbusiness/gotosocial/issues/2471#issuecomment-1891098323) is not guaranteed and seems to have very volatile latency. This will result in your GoToSocial instance performing poorly.
|
||||
|
||||
!!! danger "Oracle Free Tier"
|
||||
[Oracle Cloud Free Tier](https://www.oracle.com/cloud/free/) servers are not suitable for a GoToSocial deployment if you intend to federate with more than a handful of other instances and users.
|
||||
|
|
@ -149,13 +149,13 @@ If you can't leave `443` and `80` open on the machine, don't worry! You can conf
|
|||
|
||||
## Clustering / multi-node deployments
|
||||
|
||||
GoToSocial does not support [clustering or any form of multi-node deployment](https://github.com/superseriousbusiness/gotosocial/issues/1749).
|
||||
GoToSocial does not support [clustering or any form of multi-node deployment](https://codeberg.org/superseriousbusiness/gotosocial/issues/1749).
|
||||
|
||||
Though multiple GtS instances can use the same Postgres database and either shared local storage or the same object bucket, GtS relies on a lot of internal caching to keep things fast. There is no mechanism for synchronising these caches between instances. Without it, you'll get all kinds of odd and inconsistent behaviour. Don't do this!
|
||||
|
||||
## Tuning
|
||||
|
||||
Aside from the many instance tuning options present in the [example config file](https://github.com/superseriousbusiness/gotosocial/blob/main/example/config.yaml) you can do additional tuning on the machine your GoToSocial instance is running on.
|
||||
Aside from the many instance tuning options present in the [example config file](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/example/config.yaml) you can do additional tuning on the machine your GoToSocial instance is running on.
|
||||
|
||||
### Swap
|
||||
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@ cd ~/gotosocial
|
|||
|
||||
## Get the latest docker-compose.yaml
|
||||
|
||||
Use `wget` to download the latest [docker-compose.yaml](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/docker-compose/docker-compose.yaml) example, which we'll customize for our needs:
|
||||
Use `wget` to download the latest [docker-compose.yaml](https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/docker-compose/docker-compose.yaml) example, which we'll customize for our needs:
|
||||
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/docker-compose/docker-compose.yaml
|
||||
wget https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/docker-compose/docker-compose.yaml
|
||||
```
|
||||
|
||||
## Edit the docker-compose.yaml
|
||||
|
|
@ -45,7 +45,7 @@ If desired, update the GoToSocial Docker image tag to the version of GtS you wan
|
|||
* `X.Y.Z`: release tag. This points to a specific, stable, release of GoToSocial.
|
||||
|
||||
!!! tip
|
||||
Both the `latest` and `snapshot` tags are moving tags, whereas the `X.Y.Z` tags are immutable. The result of pulling a moving tag might change from day to day. `latest` on one system might not be the same `latest` on a different system. It's recommended to use the `X.Y.Z` tags instead so you always know exactly which version of GoToSocial you're running. The list of releases can be found [right here](https://github.com/superseriousbusiness/gotosocial/releases), with the newest release at the top.
|
||||
Both the `latest` and `snapshot` tags are moving tags, whereas the `X.Y.Z` tags are immutable. The result of pulling a moving tag might change from day to day. `latest` on one system might not be the same `latest` on a different system. It's recommended to use the `X.Y.Z` tags instead so you always know exactly which version of GoToSocial you're running. The list of releases can be found [right here](https://codeberg.org/superseriousbusiness/gotosocial/releases), with the newest release at the top.
|
||||
|
||||
### Host
|
||||
|
||||
|
|
|
|||
|
|
@ -34,14 +34,14 @@ cd /gotosocial
|
|||
Now, download the latest GoToSocial release archive corresponding to the operating system and architecture you're running on.
|
||||
|
||||
!!! tip
|
||||
You can find the list of releases [right here](https://github.com/superseriousbusiness/gotosocial/releases), arranged with the newest release at the top.
|
||||
You can find the list of releases [right here](https://codeberg.org/superseriousbusiness/gotosocial/releases), arranged with the newest release at the top.
|
||||
|
||||
For example, to download a version for running on 64-bit Linux:
|
||||
|
||||
```bash
|
||||
GTS_VERSION=X.Y.Z # replace this
|
||||
GTS_TARGET=linux_amd64
|
||||
wget https://github.com/superseriousbusiness/gotosocial/releases/download/v${GTS_VERSION}/gotosocial_${GTS_VERSION}_${GTS_TARGET}.tar.gz
|
||||
wget https://codeberg.org/superseriousbusiness/gotosocial/releases/download/v${GTS_VERSION}/gotosocial_${GTS_VERSION}_${GTS_TARGET}.tar.gz
|
||||
```
|
||||
|
||||
Then extract it:
|
||||
|
|
@ -123,7 +123,7 @@ Then make them the owner of your GoToSocial installation since they will need to
|
|||
sudo chown -R gotosocial:gotosocial /gotosocial
|
||||
```
|
||||
|
||||
You can find a `gotosocial.service` file in the `example` folder on [github](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/gotosocial.service) or your installation.
|
||||
You can find a `gotosocial.service` file in the `example` folder on [our repository](https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/gotosocial.service) or your installation.
|
||||
|
||||
Copy it to `/etc/systemd/system/gotosocial.service`:
|
||||
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ hooks:
|
|||
|
||||
对于 PostgreSQL,你应该使用 `postgresql_databases`。
|
||||
|
||||
`patterns_from` 中提到的文件可以通过转换 GoToSocial CLI 媒体命令 [`list-attachments`](cli.md#gotosocial-admin-media-list-attachments) 和 [`list-emojis`](cli.md#gotosocial-admin-media-list-emojis) 的输出来创建。要生成正确的模式,您可以使用 [`media-to-borg-patterns.py`](https://github.com/superseriousbusiness/gotosocial/tree/main/example/borgmatic/media-to-borg-patterns.py) 脚本。有关 Borg 模式如何工作的详情,参见 [他们的文档](https://man.archlinux.org/man/borg-patterns.1)。
|
||||
`patterns_from` 中提到的文件可以通过转换 GoToSocial CLI 媒体命令 [`list-attachments`](cli.md#gotosocial-admin-media-list-attachments) 和 [`list-emojis`](cli.md#gotosocial-admin-media-list-emojis) 的输出来创建。要生成正确的模式,您可以使用 [`media-to-borg-patterns.py`](https://codeberg.org/superseriousbusiness/gotosocial/tree/main/example/borgmatic/media-to-borg-patterns.py) 脚本。有关 Borg 模式如何工作的详情,参见 [他们的文档](https://man.archlinux.org/man/borg-patterns.1)。
|
||||
|
||||
您需要将该文件放在您的 GoToSocial 实例上,并确保该文件是可执行的。它需要 Python 3,安装 Borg 和 Borgmatic 后您应该已经具备。它仅依赖于 Python 标准库。
|
||||
|
||||
|
|
|
|||
|
|
@ -9,11 +9,11 @@ GoToSocial 编译为二进制可执行文件。
|
|||
以下是 `gotosocial --help` 的完整输出,不包括全局配置选项的大列表。
|
||||
|
||||
```text
|
||||
GoToSocial - 一个联邦制社交媒体服务器
|
||||
GoToSocial - 一个联合式社交媒体服务器
|
||||
|
||||
帮助文档参见:https://docs.gotosocial.org。
|
||||
帮助文档参见:https://docs.gotosocial.org/zh-cn/。
|
||||
|
||||
代码仓库:https://github.com/superseriousbusiness/gotosocial
|
||||
代码仓库:https://codeberg.org/superseriousbusiness/gotosocial
|
||||
|
||||
用法:
|
||||
gotosocial [command]
|
||||
|
|
@ -57,6 +57,9 @@ GoToSocial - 一个联邦制社交媒体服务器
|
|||
|
||||
此命令可用于在你的实例上创建新账户。
|
||||
|
||||
!!! Warning "警告"
|
||||
执行此命令前,你必须至少运行过一次服务端,以初始化数据库中的必要条目,然后才能运行此命令。
|
||||
|
||||
`gotosocial admin account create --help`:
|
||||
|
||||
```text
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
例如,实例 `instance-a.example.org`、`instance-b.example.org` 和 `instance-c.example.org` 决定他们只想彼此联合。
|
||||
|
||||
他们可以使用像 GitHub 这样的版本管理平台托管一个纯文本格式的允许列表,比如在 `https://raw.githubusercontent.com/our-cluster/allowlist/refs/heads/main/allows.txt`。
|
||||
他们可以使用像 Codeberg 这样的版本管理平台托管一个纯文本格式的允许列表,比如在 `https://codeberg.org/our-cluster/allowlist/raw/branch/main/allows.txt`。
|
||||
|
||||
纯文本格式的允许列表内容如下:
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ instance-b.example.org
|
|||
instance-c.example.org
|
||||
```
|
||||
|
||||
每个实例管理员都将他们的联合模式设置为`白名单`,并创建一个类型为“允许”,订阅地址为 `https://raw.githubusercontent.com/our-cluster/allowlist/refs/heads/main/allows.txt` 的订阅,这会为他们自己的域名以及集群中的其他域名创建域名允许条目。
|
||||
每个实例管理员都将他们的联合模式设置为`allowlist`,并创建一个类型为“允许”,订阅地址为 `https://codeberg.org/our-cluster/allowlist/raw/branch/main/allows.txt` 的订阅,这会为他们自己的域名以及集群中的其他域名创建域名允许条目。
|
||||
|
||||
在某个时候,来自 `instance-d.example.org` 的某人(在站外)申请被添加到集群中。现有的管理员同意,并更新他们的纯文本格式允许列表为:
|
||||
|
||||
|
|
@ -66,7 +66,7 @@ instance-d.example.org
|
|||
|
||||
例如,实例 `instance-e.example.org`、`instance-f.example.org` 和 `instance-g.example.org` 的管理员认定:他们厌倦了通过与坏人玩打地鼠游戏来重复工作。为了让生活更轻松,他们决定合作开发一个共享的阻止列表。
|
||||
|
||||
他们使用像 GitHub 这样的版本管理平台在类似 `https://raw.githubusercontent.com/baddies/blocklist/refs/heads/main/blocks.csv` 的地方托管一个阻止列表。
|
||||
他们使用像 Codeberg 这样的版本管理平台在类似 `https://codeberg.org/our-cluster/allowlist/raw/branch/main/blocks.csv` 的地方托管一个阻止列表。
|
||||
|
||||
当有人发现另一个他们不喜欢的实例时,他们可以通过合并请求或类似方法添加这个有问题的实例到域名列表中。
|
||||
|
||||
|
|
@ -113,6 +113,27 @@ nothanks.com,suspend,false,false,,false
|
|||
|
||||
JSON列表使用内容类型 `application/json`。
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"domain": "bumfaces.net",
|
||||
"suspended_at": "2020-05-13T13:29:12.000Z",
|
||||
"comment": "这个实例上有坏蛋"
|
||||
},
|
||||
{
|
||||
"domain": "peepee.poopoo",
|
||||
"suspended_at": "2020-05-13T13:29:12.000Z",
|
||||
"comment": "骚扰"
|
||||
},
|
||||
{
|
||||
"domain": "nothanks.com",
|
||||
"suspended_at": "2020-05-13T13:29:12.000Z"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
可以使用 `"comment"` 字段替代 `"public_comment"`:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,13 +31,18 @@ GoToSocial 当前提供“黑名单”和“白名单”联合模式,可以通
|
|||
|
||||
## 结合屏蔽与允许
|
||||
|
||||
可以同时屏蔽和允许同一个域,结合这两者的效果取决于你的实例当前使用的联合模式。
|
||||
!!! danger "危险"
|
||||
结合屏蔽和允许是一项棘手的工作!
|
||||
|
||||
在导入白名单和黑名单时,你应该始终手动审核列表,以确保不会无意中屏蔽你不想屏蔽的实例,因为这可能带来 **非常令人困扰的副作用** ,例如关注/粉丝关系的移除、贴文的删除等。
|
||||
|
||||
有疑问时,请始终首先显式添加白名单条目作为保险策略!
|
||||
|
||||

|
||||
同时屏蔽和允许同一个域名是合法的,而这两个操作结合之后的效果取决于你的实例目前正在使用哪种联合模式,具体如下所述,你可以在下面找到流程图。
|
||||
|
||||
### 在黑名单模式下
|
||||
|
||||
如图所示,在黑名单模式下(图的左侧),显式添加允许条目可以用来覆盖域名屏蔽。
|
||||
如下图所示,在黑名单模式下(图的左侧),显式添加允许条目可以用来覆盖域名屏蔽。
|
||||
|
||||
这在你从其他人处导入黑名单,但导入的黑名单中包含了一些你实际上不想屏蔽的实例时很有用。为了避免屏蔽这些实例,你可以先为这些实例显式创建允许条目。然后,当你导入黑名单时,显式允许的域将不会被屏蔽,并且创建屏蔽所导致的副作用(删除贴文、媒体、关系等)将不会被处理。
|
||||
|
||||
|
|
@ -47,16 +52,11 @@ GoToSocial 当前提供“黑名单”和“白名单”联合模式,可以通
|
|||
|
||||
### 在白名单模式下
|
||||
|
||||
如图所示,在白名单模式下(图的右侧),显式域名屏蔽条目会优先于显式域名允许条目。在运行白名单模式时,必须满足以下两个条件才能允许一个实例通过:
|
||||
如下图所示,在白名单模式下(图的右侧),显式域名屏蔽条目会优先于显式域名允许条目。在运行白名单模式时,必须满足以下两个条件才能允许一个实例通过:
|
||||
|
||||
1. 实例没有存在对应的显式域名屏蔽。
|
||||
2. 实例存在对应的显式域名允许。
|
||||
|
||||
如果上述任何条件不满足,请求将被拒绝。
|
||||
|
||||
!!! danger "危险"
|
||||
结合屏蔽和允许是一项棘手的工作!
|
||||
|
||||
在导入允许和黑名单时,你应该始终手动审核列表,以确保不会无意中屏蔽你不想屏蔽的实例,因为这可能会有**非常烦人的副作用**,例如移除关注/被关注、贴文等。
|
||||
|
||||
有疑问时,请始终首先添加显式允许作为保险策略!
|
||||

|
||||
|
|
|
|||
|
|
@ -10,8 +10,6 @@ GoToSocial 在主域名上提供一个 `robots.txt` 文件。该文件包含试
|
|||
|
||||
AI 爬虫来自一个[社区维护的仓库][airobots]。目前是手动保持同步的。如果你知道有任何遗漏的爬虫,请给他们提交一个 PR!
|
||||
|
||||
已知有许多 AI 爬虫即便明确匹配其 User-Agent,也会忽略 `robots.txt` 中的条目。这意味着 `robots.txt` 文件并不是确保 AI 爬虫不抓取你的内容的万无一失的方法。
|
||||
|
||||
如果你想完全屏蔽这些爬虫,需要在反向代理中根据 User-Agent 头进行屏蔽,直到 GoToSocial 能够根据 User-Agent 头过滤请求。
|
||||
众所周知,很多 AI 爬虫在 `robots.txt` 不允许其 User-Agent 的情况下,仍然会忽略对应规则并继续抓去内容。这意味着 `robots.txt` 文件并不是确保 AI 爬虫不抓取你的内容的万无一失的方法。除此以外,你可能还需要考虑通过[请求标头过滤](request_filtering_modes.md)来阻止对应 User-Agent,以及启用基于工作证明的[爬虫防护](../advanced/scraper_deterrence.md)。
|
||||
|
||||
[airobots]: https://github.com/ai-robots-txt/ai.robots.txt/
|
||||
|
|
|
|||
|
|
@ -15,6 +15,10 @@
|
|||
|
||||
使用 `nowasm` 构建的 GoToSocial 二进制文件将使用 [modernc 版本的 SQLite](https://pkg.go.dev/modernc.org/sqlite) 而不是 WASM 版本,并将在系统上使用 `ffmpeg` 和 `ffprobe` 二进制文件进行媒体处理。
|
||||
|
||||
!!! tip "提示"
|
||||
要测试你的系统是否支持标准构建,可以使用此命令:
|
||||
`if grep -qE '^flags.* (sse4|LSE)' /proc/cpuinfo; then echo "Your system is supporting GTS!"; else echo "Your system is not supporting GTS, you'll have to use the 'nowasm' builds :("; fi`
|
||||
|
||||
要使用 `nowasm` 标签构建 GoToSocial,可以像这样将标签传入我们的便利 `build.sh` 脚本:
|
||||
|
||||
```bash
|
||||
|
|
|
|||
18
docs/locales/zh/advanced/scraper_deterrence.md
Normal file
18
docs/locales/zh/advanced/scraper_deterrence.md
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# 爬虫防护
|
||||
|
||||
GoToSocial 提供一个可选的、基于工作量证明的爬虫和自动化 HTTP 客户端防护机制,可在账户页和贴文页的网页视图上启用。
|
||||
|
||||
它的工作原理是:针对每个传入的 HTTP 请求,系统会根据客户端信息和当前时间生成一个唯一质询(一个十六进制编码的 SHA256 哈希值)。然后,它要求客户端为该质询的一部分找到一个附加值,使(附加值+质询部分)组合计算出的新 SHA256 哈希值(同样为十六进制编码)至少包含 4 个前导 '0' 字符。这个质询会通过一个极简的等待页面呈现给客户端,该页面包含一个独立的 JavaScript worker 来计算解决方案。
|
||||
|
||||
一旦客户端提供了此质询的解,并通过在查询参数中携带该方案刷新页面,GoToSocial 将验证此方案。验证成功后,服务端会返回用户期望访问的账户或贴文页面,并设置一个 Cookie。该 Cookie 允许用户在接下来最多一小时内免验证访问该实例。
|
||||
|
||||
启用此功能的目的是让自动化数据收集(例如 AI 公司、搜索引擎)对你实例的账户和贴文页面进行爬取的行为,在经济上变得不可行。唯一的缺点是,用户需要启用 JavaScript 才能访问你的账户和贴文网页视图。
|
||||
|
||||
这个功能深受优秀的 [anubis] 项目的启发,但我们最终决定自己实现,只包含我们需要的功能,使用最少的代码,并能与我们现有的授权/认证流程实现更细粒度的结合。
|
||||
|
||||
GoToSocial 实现的这个爬虫防护功能仍然是极其精简的。因此,如果你需要更多功能或对防护措施进行更精细的控制,那么完全可以禁用我们的内置功能,并在你的实例前部署像 [anubis] 这样的服务!
|
||||
|
||||
!!! warning "警告"
|
||||
这个基于工作量证明的爬虫防护机制并不保护用户账户页的 RSS feed,因为这会带来额外的复杂性。如果你需要确保 RSS feed 可被访问,那么在这种情况下,[anubis] 可能是更合适的选择!
|
||||
|
||||
[anubis]: https://github.com/TecharoHQ/anubis
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
我们提供了一个 GoToSocial 的 AppArmor 示例策略,你可以按以下步骤获取并安装:
|
||||
|
||||
```sh
|
||||
$ curl -LO 'https://github.com/superseriousbusiness/gotosocial/raw/main/example/apparmor/gotosocial'
|
||||
$ curl -LO 'https://codeberg.org/superseriousbusiness/gotosocial/raw/main/example/apparmor/gotosocial'
|
||||
$ sudo install -o root -g root gotosocial /etc/apparmor.d/gotosocial
|
||||
$ sudo apparmor_parser -Kr /etc/apparmor.d/gotosocial
|
||||
```
|
||||
|
|
|
|||
|
|
@ -32,4 +32,4 @@ SQLite 的运行模式假定数据库和使用它的进程或应用程序位于
|
|||
* `db-sqlite-journal-mode`
|
||||
* `db-sqlite-synchronous`
|
||||
|
||||
我们不提供任何建议,因为这将根据你使用的解决方案而有所不同。请参阅 [此问题](https://github.com/superseriousbusiness/gotosocial/issues/3360#issuecomment-2380332027)以了解你可能设置的值。
|
||||
我们不提供任何建议,因为这将根据你使用的解决方案而有所不同。请参阅 [此问题](https://codeberg.org/superseriousbusiness/gotosocial/issues/3360#issuecomment-2380332027)以了解你可能设置的值。
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ tracing-insecure-transport: true
|
|||
[obs]: ../configuration/observability.md
|
||||
[tempo]: https://grafana.com/oss/tempo/
|
||||
[grafana]: https://grafana.com/oss/grafana/
|
||||
[ext]: https://github.com/superseriousbusiness/gotosocial/tree/main/example/tracing
|
||||
[ext]: https://codeberg.org/superseriousbusiness/gotosocial/tree/main/example/tracing
|
||||
|
||||
## 查询和可视化追踪
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
使用客户端 API 需要进行身份验证。本页记录了如何获取身份验证令牌的通用流程,并提供了使用 `curl` 在命令行界面进行操作的示例。
|
||||
|
||||
!!! tip "提示"
|
||||
如果你不想使用命令行,而是想通过设置面板获取 API 访问令牌,可以参考 [应用文档](https://docs.gotosocial.org/zh-cn/latest/user_guide/settings/#applications)。
|
||||
|
||||
## 创建新应用
|
||||
|
||||
我们需要注册一个新应用,以便请求 OAuth 令牌。这可以通过向 `/api/v1/apps` 端点发送 `POST` 请求来完成。注意将下面命令中的 `your_app_name` 替换为你想使用的应用名称:
|
||||
|
|
@ -19,18 +22,15 @@ curl \
|
|||
|
||||
字符串 `urn:ietf:wg:oauth:2.0:oob` 表示一种称为带外身份验证的技术,这是一种用于多因素身份验证的技术,旨在减少恶意行为者干扰身份验证过程的途径。在此情况下,它允许我们查看并手动复制生成的令牌以便继续使用。
|
||||
|
||||
注意,`scopes` 可以是以下任意空格分隔的组合:
|
||||
|
||||
- `read`
|
||||
- `write`
|
||||
- `admin`
|
||||
!!! tip "权限范围"
|
||||
根据应用执行的工作对应用进行最低限度的授权是一个好习惯。例如,如果你的应用不会发布贴文,请使用 `scope=read` 或进一步仅授权子权限。
|
||||
|
||||
本着这种精神,上例使用了`read`,这意味着应用将仅限于执行`read`操作。
|
||||
|
||||
可用范围列表请参阅[Swagger 文档](https://docs.gotosocial.org/zh-cn/latest/api/swagger/).
|
||||
|
||||
!!! warning "警告"
|
||||
GoToSocial 目前不支持范围授权令牌,因此在此过程中获得的任何令牌都可以代表你执行所有操作,包括如果你的账户具有管理员权限时的管理员操作。然而,始终以最低权限授予你的应用是一个好习惯。例如,如果你的应用不会发布贴文,请使用 scope=read。
|
||||
|
||||
本着这种精神,上述示例使用了`read`,这意味着当未来支持范围令牌时,应用将仅限于执行`read`操作。
|
||||
|
||||
你可以在[此处](https://github.com/superseriousbusiness/gotosocial/issues/2232)阅读更多关于计划中 OAuth 安全功能的信息。
|
||||
GoToSocial 0.19.0 之前的版本并不支持范围授权令牌,因此运行低于 0.19.0 的 GoToSocial 的用户通过此流程获得的任何令牌都可以代表用户执行所有操作。如果用户具有管理权限,那么令牌还可以执行管理操作。
|
||||
|
||||
成功调用会返回一个带有 `client_id` 和 `client_secret` 的响应,我们将在后续流程中需要使用这些信息。它看起来像这样:
|
||||
|
||||
|
|
@ -126,7 +126,6 @@ curl \
|
|||
|
||||
```bash
|
||||
curl \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
|
||||
'https://example.org/api/v1/accounts/verify_credentials'
|
||||
```
|
||||
|
|
@ -141,7 +140,6 @@ curl \
|
|||
|
||||
```bash
|
||||
curl \
|
||||
-H 'Content-Type: application/json' \
|
||||
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
|
||||
'https://example.org/api/v1/notifications'
|
||||
```
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ GoToSocial 使用 [go-swagger](https://github.com/go-swagger/go-swagger) 从代
|
|||
|
||||
有关更多背景信息,请参见以下问题:
|
||||
|
||||
- [#1958](https://github.com/superseriousbusiness/gotosocial/issues/1958)
|
||||
- [#1944](https://github.com/superseriousbusiness/gotosocial/issues/1944)
|
||||
- [#2641](https://github.com/superseriousbusiness/gotosocial/issues/2641)
|
||||
- [#1958](https://codeberg.org/superseriousbusiness/gotosocial/issues/1958)
|
||||
- [#1944](https://codeberg.org/superseriousbusiness/gotosocial/issues/1944)
|
||||
- [#2641](https://codeberg.org/superseriousbusiness/gotosocial/issues/2641)
|
||||
|
||||
<swagger-ui src="swagger.yaml"/>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -149,4 +149,21 @@ advanced-csp-extra-uris: []
|
|||
# 选项: ["block", "allow", ""]
|
||||
# 默认: ""
|
||||
advanced-header-filter-mode: ""
|
||||
|
||||
# 布尔值。启用基于工作量证明的爬虫威慑机制,
|
||||
# 作用于账户页和贴文页面。这将为每个 HTTP 客户端生成一个唯一确定
|
||||
# 的质询,需要由客户端在访问上述端点时完成。
|
||||
# 完成后,客户端会获得一个 Cookie,允许其在 1 小时窗口内免验证访问。
|
||||
#
|
||||
# 这样做的结果是,它理论上使得对这些端点的抓取在经济上变得不可行,
|
||||
# 同时对你自己的实例的性能影响可以忽略不计。
|
||||
#
|
||||
# 缺点是它要求客户端启用 JavaScript。
|
||||
#
|
||||
# 更多详情请查阅文档:
|
||||
# https://docs.gotosocial.org/zh-cn/latest/admin/scraper_deterrence
|
||||
#
|
||||
# 选项: [true, false]
|
||||
# 默认值: true
|
||||
advanced-scraper-deterrence: false
|
||||
```
|
||||
|
|
@ -42,6 +42,13 @@ create user gotosocial with password 'some_really_good_password';
|
|||
grant all privileges on database gotosocial to gotosocial;
|
||||
```
|
||||
|
||||
如果开始使用时你使用的是 Postgres 14 或更高版本,或者遇到 `error executing command: error creating dbservice: db migration error: ERROR: permission denied for schema public`,你应当授予你的 db 用户 `CREATE` 权限 *(这 **必须** 在连接到 gotosocial 数据库的 postgres shell 中执行)*:
|
||||
|
||||
```psql
|
||||
GRANT CREATE ON SCHEMA public TO gotosocial;
|
||||
SELECT has_schema_privilege('gotosocial', 'public', 'CREATE'); -- should return t
|
||||
```
|
||||
|
||||
GoToSocial 使用 ULIDs(全局唯一且按字典顺序可排序的标识符),这在非英文排序环境中不起作用。因此,创建数据库时使用 `C.UTF-8` 地区设置很重要。在已经使用非 C 地区初始化的系统上,必须使用 `template0` 原始数据库模板才能进行。
|
||||
|
||||
如果你希望使用特定选项连接到 Postgres,可以使用 `db-postgres-connection-string` 定义连接字符串。如果 `db-postgres-connection-string` 已定义,则所有其他与数据库相关的配置字段将被忽略。例如,可以使用 `db-postgres-connection-string` 连接到 `mySchema`,用户名为 `myUser`,密码为 `myPass`,在 `localhost` 上,数据库名称为 `db`:
|
||||
|
|
@ -131,7 +138,7 @@ db-tls-ca-cert: ""
|
|||
# 乘数 8 是一个合理的默认值,但你可能希望为在非常高性能硬件上运行的实例增加此值,或为使用非常慢的 CPU 的实例减少此值。
|
||||
#
|
||||
# 请注意!!:此设置目前仅适用于 Postgres。SQLite 将始终使用 1 个连接,无论此处设置为何。这种行为将在实现更好的 SQLITE_BUSY 处理时更改。
|
||||
# 更多详情请参见 https://github.com/superseriousbusiness/gotosocial/issues/1407。
|
||||
# 更多详情请参见 https://codeberg.org/superseriousbusiness/gotosocial/issues/1407。
|
||||
#
|
||||
# 示例: [16, 8, 10, 2]
|
||||
# 默认: 8
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ gotosocial --config-path ./config.yaml server start
|
|||
|
||||
该命令需要一个 [YAML](https://en.wikipedia.org/wiki/YAML) 或 [JSON](https://en.wikipedia.org/wiki/JSON) 格式的文件。
|
||||
|
||||
可以在[这里](https://github.com/superseriousbusiness/gotosocial/blob/main/example/config.yaml)找到示例配置文件,其中包含每个配置字段的解释、默认值和示例值。此示例文件也包含在每个发行版的下载资源中。
|
||||
可以在[这里](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/example/config.yaml)找到示例配置文件,其中包含每个配置字段的解释、默认值和示例值。此示例文件也包含在每个发行版的下载资源中。
|
||||
|
||||
建议创建你自己的配置文件,只更改你需要改变的设置。这可以确保在每次发布时,你不必合并默认值的更改或者增删未从默认值更改的配置设置。
|
||||
|
||||
|
|
@ -119,7 +119,7 @@ gotosocial server start --media-image-max-size 2097152
|
|||
|
||||
*大多数*配置参数都提供了合理的默认值,除了必须自定义值的情况。
|
||||
|
||||
请查看[示例配置文件](https://github.com/superseriousbusiness/gotosocial/blob/main/example/config.yaml)以获取默认值,或运行 `gotosocial --help`。
|
||||
请查看[示例配置文件](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/example/config.yaml)以获取默认值,或运行 `gotosocial --help`。
|
||||
|
||||
## `GTS_WAZERO_COMPILATION_CACHE`
|
||||
|
||||
|
|
@ -129,7 +129,7 @@ gotosocial server start --media-image-max-size 2097152
|
|||
|
||||
你可以通过将环境变量 `GTS_WAZERO_COMPILATION_CACHE` 设置为一个目录来指示 GoToSocial 存储 Wazero 工件,该目录将由 GtS 用于存储两个大小约为 ~50MiB 的小型工件(总计约 ~100MiB)。
|
||||
|
||||
要了解此方法的示例,请参见 [docker-compose.yaml](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/docker-compose/docker-compose.yaml) 和 [gotosocial.service](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/gotosocial.service) 示例文件。
|
||||
要了解此方法的示例,请参见 [docker-compose.yaml](https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/docker-compose/docker-compose.yaml) 和 [gotosocial.service](https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/gotosocial.service) 示例文件。
|
||||
|
||||
如果你希望在 systemd 或 Docker 之外为 GtS 提供此值,可以在启动 GtS 服务器时通过以下方式进行:
|
||||
|
||||
|
|
|
|||
|
|
@ -38,4 +38,4 @@ GoToSocial 默认配置了基于 IP 的[限流规则](./api/ratelimiting.md),
|
|||
|
||||
## 为什么还在 Beta 阶段?
|
||||
|
||||
查看[当前 bug 列表](https://github.com/superseriousbusiness/gotosocial/issues?q=is%3Aissue+is%3Aopen+label%3Abug)和[路线图](https://github.com/superseriousbusiness/gotosocial/blob/main/docs/locales/zh/repo/ROADMAP.md)以获取更详细的信息。
|
||||
查看[当前 bug 列表](https://codeberg.org/superseriousbusiness/gotosocial/issues?q=is%3Aissue+is%3Aopen+label%3Abug)和[路线图](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/docs/locales/zh/repo/ROADMAP.md)以获取更详细的信息。
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@ GoToSocial 使用 [superseriousbusiness/httpsig](https://codeberg.org/superserio
|
|||
|
||||
接收请求时,GtS 将首先尝试验证包含查询参数的签名。如果签名验证失败,它将尝试在不包含查询参数的情况下重新验证签名。
|
||||
|
||||
详细信息请参见 [#894](https://github.com/superseriousbusiness/gotosocial/issues/894)。
|
||||
详细信息请参见 [#894](https://codeberg.org/superseriousbusiness/gotosocial/issues/894)。
|
||||
|
||||
## 传入请求
|
||||
|
||||
GoToSocial 的请求签名验证在 [internal/federation](https://github.com/superseriousbusiness/gotosocial/blob/main/internal/federation/authenticate.go) 中实现。
|
||||
GoToSocial 的请求签名验证在 [internal/federation](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/internal/federation/authenticate.go) 中实现。
|
||||
|
||||
GoToSocial 将尝试按以下算法顺序解析签名,成功后将停止:
|
||||
|
||||
|
|
@ -36,9 +36,9 @@ ED25519
|
|||
|
||||
## 发出请求
|
||||
|
||||
GoToSocial 的请求签名在 [internal/transport](https://github.com/superseriousbusiness/gotosocial/blob/main/internal/transport/signing.go) 中实现。
|
||||
GoToSocial 的请求签名在 [internal/transport](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/internal/transport/signing.go) 中实现。
|
||||
|
||||
一旦解决了 https://github.com/superseriousbusiness/gotosocial/issues/2991 ,GoToSocial 将使用 `(created)` 伪标头代替 `date`。
|
||||
一旦解决了 https://codeberg.org/superseriousbusiness/gotosocial/issues/2991 ,GoToSocial 将使用 `(created)` 伪标头代替 `date`。
|
||||
|
||||
然而,目前在组装签名时:
|
||||
|
||||
|
|
@ -82,4 +82,4 @@ https://example.org/users/example_user#main-key
|
|||
|
||||
与 GoToSocial 联合的外站服务器应从 `publicKey` 字段提取公钥。然后,它们应该使用公钥的 `owner` 字段签名 `GET` 请求,进一步解引用 Actor 的完整版本。
|
||||
|
||||
这种行为是为了避免外站服务器对完整 Actor 端点进行未签名的 `GET` 请求引入的。然而,由于不合规且引发问题,此行为可能会在未来发生变化。在 [此问题](https://github.com/superseriousbusiness/gotosocial/issues/1186) 中进行跟踪。
|
||||
这种行为是为了避免外站服务器对完整 Actor 端点进行未签名的 `GET` 请求引入的。然而,由于不合规且引发问题,此行为可能会在未来发生变化。在 [此问题](https://codeberg.org/superseriousbusiness/gotosocial/issues/1186) 中进行跟踪。
|
||||
|
|
|
|||
|
|
@ -1,5 +1,56 @@
|
|||
# 帖文及其属性
|
||||
|
||||
## 媒体附件, Blurhash, 与焦点
|
||||
|
||||
GoToSocial 在贴文的 `attachment` 属性中使用以下类型发送媒体附件:
|
||||
|
||||
- `Image` - 任何图片类型 (webp, jpeg, gif, png, 等等)。
|
||||
- `Video` - 任何视频类型 (mp4, mkv, webm, 等等)。
|
||||
- `Audio` - 任何音频类型 (mp3, flac, wma, 等等)。
|
||||
- `Document` - 任何其他 / 未知类型。
|
||||
|
||||
GoToSocial 发送的附件包含 MIME 类型(`mediaType`)、媒体文件的完整尺寸版本的 `url` 以及摘要(`summary`)属性,外站实例可以将摘要属性解析为附件的简短描述或替代文本。
|
||||
|
||||
`Image` 和 `Video` 类型还会包含 `http://joinmastodon.org/ns#blurhash` 属性,以便外站实例可以生成图片的彩色哈希值。如果音频文件包含嵌入的封面图片,那么 `Audio` 类型也会包含 blurhash。请参阅 [Mastodon blurhash 文档](https://docs.joinmastodon.org/spec/activitypub/#blurhash)。
|
||||
|
||||
`Image` 类型还可能包含 `http://joinmastodon.org/ns#focalPoint` 属性,它是一个包含两个浮点数的数组,取值范围在 -1.0 到 1.0 之间,表示图片的焦点 x-y 坐标。请参阅 [Mastodon focalPoint 文档](https://docs.joinmastodon.org/spec/activitypub/#focalPoint)。
|
||||
|
||||
以下是一个包含一个附件的 `Note` 示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"@context": [
|
||||
"https://www.w3.org/ns/activitystreams",
|
||||
{
|
||||
"blurhash": "toot:blurhash",
|
||||
"focalPoint": {
|
||||
"@container": "@list",
|
||||
"@id": "toot:focalPoint"
|
||||
},
|
||||
"toot": "http://joinmastodon.org/ns#"
|
||||
}
|
||||
],
|
||||
"type": "Note",
|
||||
[...],
|
||||
"attachment": [
|
||||
{
|
||||
"blurhash": "LIIE|gRj00WB-;j[t7j[4nWBj[Rj",
|
||||
"focalPoint": [
|
||||
-0.5,
|
||||
0.5
|
||||
],
|
||||
"mediaType": "image/jpeg",
|
||||
"summary": "Black and white image of some 50's style text saying: Welcome On Board",
|
||||
"type": "Image",
|
||||
"url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg"
|
||||
}
|
||||
],
|
||||
[...]
|
||||
}
|
||||
```
|
||||
|
||||
当接收来自外站实例的带有附件的贴文时,GoToSocial 会尝试将 `Image`、`Video`、`Audio` 或 `Document` 类型解析为媒体附件。实际使用这四种类型中的哪种类型并不重要。它会检查 `blurhash` 和 `focalPoint` 属性,若这些属性存在,就使用它们。它会使用 `summary` 值作为简短描述 / 替代文本,如果 `summary` 未设置,则回退到 `name`。
|
||||
|
||||
## 话题标签
|
||||
|
||||
GoToSocial 用户可以在贴文中包含话题标签,用于向其他实例表明该用户希望将其贴文与其他使用相同话题标签的贴文加入同一分组,以便于发现。
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ GoToSocial 的轻量系统要求意味着它在配置良好的单板计算机上
|
|||
!!! warning "云存储卷"
|
||||
并非所有的云 VPS 存储都相同,声称基于 SSD 的存储并不一定适合作为 GoToSocial 实例的运行环境。
|
||||
|
||||
[Hetzner 云卷的性能](https://github.com/superseriousbusiness/gotosocial/issues/2471#issuecomment-1891098323)没有保证,且延迟波动较大。这会导致你的 GoToSocial 实例表现不佳。
|
||||
[Hetzner 云卷的性能](https://codeberg.org/superseriousbusiness/gotosocial/issues/2471#issuecomment-1891098323)没有保证,且延迟波动较大。这会导致你的 GoToSocial 实例表现不佳。
|
||||
|
||||
!!! danger "Oracle 免费套餐"
|
||||
如果你打算与多个其他实例和用户联合,[Oracle 云免费套餐](https://www.oracle.com/cloud/free/) 服务器不适合用于 GoToSocial 部署。
|
||||
|
|
@ -145,13 +145,13 @@ GoToSocial 需要开放端口 `80` 和 `443`。
|
|||
|
||||
## 集群 / 多节点部署
|
||||
|
||||
GoToSocial 不支持[集群或任何形式的多节点部署](https://github.com/superseriousbusiness/gotosocial/issues/1749)。
|
||||
GoToSocial 不支持[集群或任何形式的多节点部署](https://codeberg.org/superseriousbusiness/gotosocial/issues/1749)。
|
||||
|
||||
尽管多个 GtS 实例可以使用相同的 Postgres 数据库和共享的本地存储或相同的对象桶,但 GtS 依赖于大量的内部缓存以保持高效。没有同步这些实例缓存的机制。没有它,你会得到各种奇怪和不一致的行为。不要这样做!
|
||||
|
||||
## 调优
|
||||
|
||||
除了[示例配置文件](https://github.com/superseriousbusiness/gotosocial/blob/main/example/config.yaml)中的众多实例调优选项之外,你还可以对运行 GoToSocial 实例的机器进行额外的调优。
|
||||
除了[示例配置文件](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/example/config.yaml)中的众多实例调优选项之外,你还可以对运行 GoToSocial 实例的机器进行额外的调优。
|
||||
|
||||
### 交换内存
|
||||
|
||||
|
|
|
|||
|
|
@ -20,10 +20,10 @@ cd ~/gotosocial
|
|||
|
||||
## 获取最新的 docker-compose.yaml
|
||||
|
||||
使用 `wget` 下载最新的 [docker-compose.yaml](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/docker-compose/docker-compose.yaml) 示例,我们将根据需要进行自定义:
|
||||
使用 `wget` 下载最新的 [docker-compose.yaml](https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/docker-compose/docker-compose.yaml) 示例,我们将根据需要进行自定义:
|
||||
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/docker-compose/docker-compose.yaml
|
||||
wget https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/docker-compose/docker-compose.yaml
|
||||
```
|
||||
|
||||
## 编辑 docker-compose.yaml
|
||||
|
|
@ -45,7 +45,7 @@ nano docker-compose.yaml
|
|||
* `X.Y.Z`:发布标签。这指向 GoToSocial 的特定、稳定的版本。
|
||||
|
||||
!!! tip "提示"
|
||||
`latest` 和 `snapshot` 标签是动态标签,而 `X.Y.Z` 标签是固定的。拉取动态标签的结果可能每天都会变化。同一系统上的 `latest` 可能与不同系统上的 `latest` 不同。建议使用 `X.Y.Z` 标签,以便你始终确切知道运行的是 GoToSocial 的哪个版本。发布列表可以在[这里](https://github.com/superseriousbusiness/gotosocial/releases)找到,最新的发布在顶部。
|
||||
`latest` 和 `snapshot` 标签是动态标签,而 `X.Y.Z` 标签是固定的。拉取动态标签的结果可能每天都会变化。同一系统上的 `latest` 可能与不同系统上的 `latest` 不同。建议使用 `X.Y.Z` 标签,以便你始终确切知道运行的是 GoToSocial 的哪个版本。发布列表可以在[这里](https://codeberg.org/superseriousbusiness/gotosocial/releases)找到,最新的发布在顶部。
|
||||
|
||||
### 主机
|
||||
|
||||
|
|
|
|||
|
|
@ -34,14 +34,14 @@ cd /gotosocial
|
|||
现在,下载与你运行的操作系统和架构相对应的最新 GoToSocial 发行版压缩包。
|
||||
|
||||
!!! tip "提示"
|
||||
你可以在[这里](https://github.com/superseriousbusiness/gotosocial/releases)找到按发布时间排列的发布列表,最新的发行版位于最上面。
|
||||
你可以在[这里](https://codeberg.org/superseriousbusiness/gotosocial/releases)找到按发布时间排列的发布列表,最新的发行版位于最上面。
|
||||
|
||||
例如,下载适用于 64 位 Linux 的版本:
|
||||
|
||||
```bash
|
||||
GTS_VERSION=X.Y.Z # 替换此处
|
||||
GTS_TARGET=linux_amd64
|
||||
wget https://github.com/superseriousbusiness/gotosocial/releases/download/v${GTS_VERSION}/gotosocial_${GTS_VERSION}_${GTS_TARGET}.tar.gz
|
||||
wget https://codeberg.org/superseriousbusiness/gotosocial/releases/download/v${GTS_VERSION}/gotosocial_${GTS_VERSION}_${GTS_TARGET}.tar.gz
|
||||
```
|
||||
|
||||
然后解压:
|
||||
|
|
@ -123,7 +123,7 @@ sudo usermod -a -G gotosocial gotosocial
|
|||
sudo chown -R gotosocial:gotosocial /gotosocial
|
||||
```
|
||||
|
||||
你可以在 [GitHub](https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/example/gotosocial.service) 或你的安装文件夹中的 `example` 文件夹中找到一个 `gotosocial.service` 文件。
|
||||
你可以在 [我们的 Codeberg 存储库](https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/example/gotosocial.service) 或你的安装文件夹中的 `example` 文件夹中找到一个 `gotosocial.service` 文件。
|
||||
|
||||
将它复制到 `/etc/systemd/system/gotosocial.service`:
|
||||
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ nav:
|
|||
- "advanced/tracing.md"
|
||||
- "advanced/metrics.md"
|
||||
- "advanced/replicating-sqlite.md"
|
||||
- "advanced/scraper_deterrence.md"
|
||||
- "advanced/sqlite-networked-storage.md"
|
||||
- "适用进阶场景的构建":
|
||||
- "advanced/builds/nowasm.md"
|
||||
|
|
|
|||
|
|
@ -41,11 +41,11 @@
|
|||
|
||||
## 错误报告与功能请求
|
||||
|
||||
目前,我们使用 Github 的问题追踪系统来管理错误报告与功能请求。
|
||||
目前,我们使用 Codeberg 的问题追踪系统来管理错误报告与功能请求。
|
||||
|
||||
你可以在[此处](https://github.com/superseriousbusiness/gotosocial/issues "GoToSocial 的 Github 问题页")查看所有开放的问题。
|
||||
你可以在[此处](https://codeberg.org/superseriousbusiness/gotosocial/issues "GoToSocial 的 Codeberg 问题追踪页")查看所有开放的问题。
|
||||
|
||||
在创建新问题之前,不论是错误还是功能请求,**请现仔细搜索所有仍处于打开状态和已被关闭的问题,以确保它尚未被解决过**。你可以使用 Github 的关键字搜索来进行此操作。如果你的问题与已有问题重复,它将被关闭。
|
||||
在创建新问题之前,不论是错误还是功能请求,**请现仔细搜索所有仍处于打开状态和已被关闭的问题,以确保它尚未被解决过**。你可以使用 Codeberg 的关键字搜索来进行此操作。如果你的问题与已有问题重复,它将被关闭。
|
||||
|
||||
在打开功能请求之前,请考虑以下几点:
|
||||
|
||||
|
|
@ -121,26 +121,22 @@ conda env export -n gotosocial-docs --from-history --override-channels -c conda-
|
|||
|
||||
### Golang 的分支特点
|
||||
|
||||
Golang 的一个特点是,它所依赖的源代码管理路径与 `go.mod` 中使用的路径以及各 Go 文件中的包导入路径相同。这使得使用分支有些棘手。
|
||||
|
||||
假设你要将 GoToSocial 分支到 `github.com/yourgithubname/gotosocial`,然后将存储库克隆到 `~/go/src/github.com/yourgithubname/gotosocial`。你可能会在尝试运行测试或构建时遇到错误,因此你可能会更改 `go.mod` 文件,使模块名称为 `github.com/yourgithubname/gotosocial` 而不是 `github.com/superseriousbusiness/gotosocial`。但这样做会破坏项目中的所有导入路径。这简直是噩梦!于是,你不得不逐一在源代码文件中将 `github.com/superseriousbusiness/gotosocial` 替换为 `github.com/yourgithubname/gotosocial`。这样确实能行得通,但一旦你决定对原始存储库发起合并请求,所有路径变更都会被包含在内!哦不!
|
||||
|
||||
正确的解决方案是先派生存储库,然后克隆上游存储库,并将上游存储库的 `origin` 设置为你分支的源。
|
||||
Golang 的一个特点是,它所依赖的源代码管理路径与 `go.mod` 中使用的路径以及各 Go 文件中的包导入路径相同。这使得使用分支版本变得有些棘手。这个问题的解决方案是先派生存储库,然后克隆上游存储库,并将上游存储库的 `origin` 设置为你派生的存储库的源。
|
||||
|
||||
有关更多细节,请参阅[这篇博客](https://blog.sgmansfield.com/2016/06/working-with-forks-in-go/)。
|
||||
|
||||
为防此文章消失,此处是步骤(有轻微修改):
|
||||
|
||||
>
|
||||
> 在 GitHub 上派生存储库或设置任何其他远程 git 存储库。在这种情况下,我会转到 GitHub 并分支存储库。
|
||||
> 在 Codeberg 上派生存储库或设置任何其他远端 git 存储库。在这种情形下,我会转到 Codeberg 并派生存储库。
|
||||
>
|
||||
> 现在克隆上游存储库(而非派生的存储库):
|
||||
>
|
||||
> `mkdir -p ~/go/src/github.com/superseriousbusiness && git clone git@github.com:superseriousbusiness/gotosocial ~/go/src/github.com/superseriousbusiness/gotosocial`
|
||||
> `mkdir -p ~/go/src/code.superseriousbusiness.org && git clone git@codeberg.org:superseriousbusiness/gotosocial ~/go/src/code.superseriousbusiness.org/gotosocial`
|
||||
>
|
||||
> 转到你的计算机上上游存储库的顶级目录:
|
||||
>
|
||||
> `cd ~/go/src/github.com/superseriousbusiness/gotosocial`
|
||||
> `cd ~/go/src/code.superseriousbusiness.org/gotosocial`
|
||||
>
|
||||
> 将当前的 origin 远程源重命名为 upstream:
|
||||
>
|
||||
|
|
@ -148,7 +144,7 @@ Golang 的一个特点是,它所依赖的源代码管理路径与 `go.mod` 中
|
|||
>
|
||||
> 把你的派生分支添加为 origin:
|
||||
>
|
||||
> `git remote add origin git@github.com:yourgithubname/gotosocial`
|
||||
> `git remote add origin git@codeberg.org:username/gotosocial`
|
||||
>
|
||||
|
||||
在第一次构建项目之前,一定要运行 `git fetch`。
|
||||
|
|
@ -157,9 +153,9 @@ Golang 的一个特点是,它所依赖的源代码管理路径与 `go.mod` 中
|
|||
|
||||
#### 二进制文件
|
||||
|
||||
要开始构建,你需要先安装 Go。GtS 目前使用 Go 1.21,因此你也应该使用这个版本。安装指南见[此处](https://golang.org/doc/install)。
|
||||
要开始构建,你首先需要安装 Go。你可以在顶层目录的 `go.mod` 文件中查看需要安装的 Go 版本,然后按照[此处](https://golang.org/doc/install)的指引进行安装。
|
||||
|
||||
安装 go 后,将此存储库克隆到你的 Go 路径中。通常,此路径为 `~/go/src/github.com/superseriousbusiness/gotosocial`。
|
||||
安装 Go 后,将此存储库克隆到你的 Go 路径中。通常,此路径为 `~/go/src/code.superseriousbusiness.org/gotosocial`。
|
||||
|
||||
安装完上述环境与依赖后,可以尝试构建项目:`./scripts/build.sh`。此命令将构建 `gotosocial` 二进制文件。
|
||||
|
||||
|
|
@ -187,8 +183,6 @@ GoReleaser 还被 GoToSocial 用于构建和推送 Docker 镜像。
|
|||
|
||||
为此,首先[安装 GoReleaser](https://goreleaser.com/install/)。
|
||||
|
||||
然后按照[Swagger 部分](#更新-swagger-文档)的说明安装 GoSwagger。
|
||||
|
||||
接着按[样式表 / Web开发](#样式表--web开发)的说明安装 Node 和 Yarn。
|
||||
|
||||
最后,创建快照构建,执行:
|
||||
|
|
@ -201,7 +195,7 @@ goreleaser release --clean --snapshot
|
|||
|
||||
##### 手动构建
|
||||
|
||||
如果你更喜欢以简单方法构建 Docker 容器,使用更少的依赖(go-swagger, Node, Yarn),也可以这样构建:
|
||||
如果你更喜欢以简单方法构建 Docker 容器,使用更少的依赖(Node, Yarn),也可以这样构建:
|
||||
|
||||
```bash
|
||||
./scripts/build.sh && docker buildx build -t superseriousbusiness/gotosocial:latest .
|
||||
|
|
@ -209,6 +203,8 @@ goreleaser release --clean --snapshot
|
|||
|
||||
上述命令首先构建 `gotosocial` 二进制文件,然后调用 Docker buildx 构建容器镜像。
|
||||
|
||||
如果在构建过程中出现错误,提示 `"/web/assets/swagger.yaml": not found`,则需要(重新)生成 Swagger 文档,参见 [更新 Swagger 文档](#更新-swagger-文档)。
|
||||
|
||||
如果想为不同 CPU 架构构建 docker 镜像而不设置 buildx(例如 ARMv7 aka 32-bit ARM),首先需要通过添加以下几行到 Dockerfile 顶部来修改 Dockerfile(但不要提交此更改!):
|
||||
|
||||
```dockerfile
|
||||
|
|
@ -396,7 +392,7 @@ golangci-lint run
|
|||
|
||||
### 测试
|
||||
|
||||
GoToSocial 提供了一个 [testrig](https://github.com/superseriousbusiness/gotosocial/tree/main/testrig),包含一些可以用于集成测试的模拟包。
|
||||
GoToSocial 提供了一个 [testrig](https://codeberg.org/superseriousbusiness/gotosocial/tree/main/testrig),包含一些可以用于集成测试的模拟包。
|
||||
|
||||
没有模拟的一个东西是数据库接口,因为使用内存中的 SQLite 数据库比模拟所有东西要简单得多。
|
||||
|
||||
|
|
@ -483,64 +479,24 @@ GTS_DB_TYPE="postgres" GTS_DB_ADDRESS="localhost" go test -p 1 ./...
|
|||
|
||||
GoToSocial 使用 [go-swagger](https://goswagger.io) 根据代码注释生成 Swagger API 文档。
|
||||
|
||||
你可以遵循 [此处](https://goswagger.io/go-swagger/install/) 的说明安装 go-swagger。
|
||||
|
||||
如果你更改了任何 API 路径上的 Swagger 注释,可以通过运行以下命令在 `./docs/api/swagger.yaml` 生成一个新的 Swagger 文件:
|
||||
如果你修改了任何 API 端点上的 Swagger 注释,你可以通过运行以下命令在 `./docs/api/swagger.yaml` 生成一个新的 Swagger 文件,并通过以下命令将该文件复制到 web 资源目录中:
|
||||
|
||||
```bash
|
||||
go run github.com/go-swagger/go-swagger/cmd/swagger generate spec --scan-models --exclude-deps --output docs/api/swagger.yaml
|
||||
go run ./vendor/github.com/go-swagger/go-swagger/cmd/swagger \
|
||||
generate spec --scan-models --exclude-deps -o docs/api/swagger.yaml \
|
||||
&& cp docs/api/swagger.yaml web/assets/swagger.yaml
|
||||
```
|
||||
|
||||
你无需安装 go-swagger 来运行此命令,因为 `vendor` 目录中已经包含了 go-swagger。
|
||||
|
||||
### CI/CD 配置
|
||||
|
||||
GoToSocial 使用 [Drone](https://www.drone.io/) 进行 CI/CD 任务,如运行测试、代码检查和构建 Docker 容器。
|
||||
GoToSocial 使用 [Woodpecker CI](https://woodpecker-ci.org/) 进行 CI/CD 任务,如运行测试、代码检查和构建 Docker 容器。
|
||||
|
||||
这些运行与 GitHub 集成,在打开拉取请求或合并到主干时执行。
|
||||
这些运行与 Codeberg 集成,在打开拉取请求或合并到主干时执行。
|
||||
|
||||
GoToSocial 的 Drone 实例在 [此处](https://drone.superseriousbusiness.org/superseriousbusiness/gotosocial)。
|
||||
`woodpecker` 流水线文件在 [此处](../../../../.woodpecker) —— 它们定义了 Woodpecker 如何运行及何时运行。
|
||||
|
||||
`drone.yml` 文件在 [此处](../../../../.drone.yml) —— 它定义了 Drone 如何运行及何时运行。Drone 的文档在 [此处](https://docs.drone.io/)。
|
||||
GoToSocial 的 Woodpecker 实例地址在 [此处](https://woodpecker.superseriousbusiness.org/repos/2).
|
||||
|
||||
值得注意的是,`drone.yml` 文件必须由 Drone 管理员帐户签名后才被视为有效。每次修改该文件时都必须这样做。这是为了防止篡改和劫持 Drone 实例。请参阅 [此处](https://docs.drone.io/signature/)。
|
||||
|
||||
要签署文件,请首先安装并设置 [drone cli 工具](https://docs.drone.io/cli/install/)。然后,运行:
|
||||
|
||||
```bash
|
||||
drone -t PUT_YOUR_DRONE_ADMIN_TOKEN_HERE -s https://drone.superseriousbusiness.org sign superseriousbusiness/gotosocial --save
|
||||
```
|
||||
|
||||
### 发布检查清单
|
||||
|
||||
首先:如果这是一个安全修复,我们可能会加急处理此清单,并在几天后发布包含此修复的版本。
|
||||
|
||||
现在,解决完安全问题后,此处是我们的清单。
|
||||
|
||||
GoToSocial 遵循 [语义化版本控制](https://semver.org/)。
|
||||
因此,清单上的首要问题是:
|
||||
|
||||
- 我们正在发布哪个版本?
|
||||
|
||||
接下来我们需要检查:
|
||||
|
||||
- 这些资源是否需要重新构建并提交到存储库。
|
||||
- Swagger 文档是否需要重新生成?
|
||||
|
||||
在项目管理方面:
|
||||
|
||||
- 是否有需要移动到其他里程碑的问题?
|
||||
- [路线图](./ROADMAP.md) 上是否有可以勾掉的事情?
|
||||
|
||||
一旦我们对清单满意,我们就可以创建标签并推送它。
|
||||
剩下的事情 [是自动化](../../../../.drone.yml)。
|
||||
|
||||
然后我们可以前往 GitHub,为发布说明增添个性。
|
||||
最后,我们在所有渠道上发布公告,宣布发布已完成!
|
||||
|
||||
#### 如果出问题了怎么办?
|
||||
|
||||
有时事情会出错。
|
||||
我们发布了有 Bug 的版本,或者忘记了什么重要的东西。
|
||||
|
||||
如果该版本不可用,甚至对很大一部分用户而言是危险的,我们可以删除标签。
|
||||
|
||||
无论怎样,一旦我们解决了问题,我们就重新开始这个清单。版本号并不昂贵,可以随意更改。
|
||||
Woodpecker 的文档参见 [此处](https://woodpecker-ci.org/docs/intro).
|
||||
|
|
@ -3,23 +3,23 @@
|
|||
|
||||
**有关企业赞助的更新:我们欢迎与符合我们价值观的组织建立赞助关系;请查看下述条件**
|
||||
|
||||
GoToSocial 是一个用 Golang 编写的 [ActivityPub](https://activitypub.rocks/) 社交网络服务端。
|
||||
🏳️🌈 GoToSocial 是一个用 Golang 编写的 [ActivityPub](https://activitypub.rocks/) 社交网络服务端。 🏳️⚧️
|
||||
|
||||
通过 GoToSocial,你可以与朋友保持联系,发帖、阅读和分享图片及文章,且不会被追踪或广告打扰!
|
||||
|
||||
<p align="middle">
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/sloth.webp" width="300"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/sloth.webp" width="300"/>
|
||||
</p>
|
||||
|
||||
**GoToSocial 仍然是 [BETA 软件](https://en.wikipedia.org/wiki/Software_release_life_cycle#Beta)**。它已经可被部署和使用,并能与许多其他 Fediverse 服务端顺利联合(但还不是与所有服务端)。然而,许多功能尚未实现,而且还有不少漏洞!我们在 2024 年 9 月/10 月离开了 Alpha 阶段,并计划于 2026 年结束 Beta。
|
||||
|
||||
文档位于 [docs.gotosocial.org](https://docs.gotosocial.org/zh-cn/)。你可以直接跳至 [API 文档](https://docs.gotosocial.org/zh-cn/latest/api/swagger/)。
|
||||
|
||||
要从源代码构建,请查看 [CONTRIBUTING.md](https://github.com/superseriousbusiness/gotosocial/blob/main/docs/locales/zh/repo/CONTRIBUTING.md) 文件。
|
||||
要从源代码构建,请查看 [CONTRIBUTING.md](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/docs/locales/zh/repo/CONTRIBUTING.md) 文件。
|
||||
|
||||
这是实例首页的截图!你也可以看一看本项目在 GoToSocial 上的官方账号: [https://gts.superseriousbusiness.org/@gotosocial](https://gts.superseriousbusiness.org/@gotosocial)。
|
||||
|
||||

|
||||

|
||||
<!--overview-end-->
|
||||
|
||||
## 目录 <!-- omit in toc -->
|
||||
|
|
@ -40,6 +40,7 @@ GoToSocial 是一个用 Golang 编写的 [ActivityPub](https://activitypub.rocks
|
|||
- [多种联合模式](#多种联合模式)
|
||||
- [OIDC 集成](#oidc-集成)
|
||||
- [后端优先设计](#后端优先设计)
|
||||
- [替代实现](#替代实现)
|
||||
- [已知问题](#已知问题)
|
||||
- [安装 GoToSocial](#安装-gotosocial)
|
||||
- [支持的平台](#支持的平台)
|
||||
|
|
@ -73,7 +74,7 @@ GoToSocial 提供了一个轻量级、可定制且注重安全的进入 [联邦
|
|||
|
||||
如果你曾使用过 Twitter 或 Tumblr(甚至是 Myspace)等服务,GoToSocial 可能会让你感到熟悉:你可以关注他人并拥有粉丝,发布贴文,点赞、回复和分享他人的帖子,并通过时间线浏览你关注的人的贴文。你可以撰写长篇或短篇贴文,或者仅发布图片,一切随你选择。当然,你也可以屏蔽他人,或通过选择仅向朋友发布来限制不想要的互动。
|
||||
|
||||

|
||||

|
||||
|
||||
**GoToSocial 不使用推荐算法,也不收集你的数据来推荐内容或“改善你的体验”**。时间线是按时间顺序排列的:你在时间线顶部看到的内容是*刚刚发布的*,而不是根据你的个人资料选择的“有趣”或“有争议”的内容。
|
||||
|
||||
|
|
@ -85,7 +86,7 @@ GoToSocial 不会宣称比其他应用更“好”,但它提供了一些可能
|
|||
|
||||
因为 GoToSocial 使用 [ActivityPub](https://activitypub.rocks/),你不仅可以与本站上的人交流,还可以无缝与 [联邦宇宙](https://en.wikipedia.org/wiki/Fediverse) 上的人交流。
|
||||
|
||||

|
||||

|
||||
|
||||
联合意味着你的实例是一个遍布世界的、使用相同协议通信的服务器网络的一部分。你的数据不再集中在一家公司服务器上,而是在你自己的服务器上,根据你的意愿,跨越由其他人运行的服务器组成的弹性网络实现共享。
|
||||
|
||||
|
|
@ -101,7 +102,7 @@ GoToSocial 的愿景是让许多小而特别的实例遍布联邦宇宙,让人
|
|||
|
||||
我们在 2021 年 11 月进行了首次 Alpha 发布。我们于 2024 年 9 月/10 月离开 Alpha,进入 Beta 阶段。
|
||||
|
||||
要详细了解已实现和未实现的内容,以及 [稳定发布](https://en.wikipedia.org/wiki/Software_release_life_cycle#Stable_release) 的进展,请查看 [路线图](https://github.com/superseriousbusiness/gotosocial/blob/main/docs/locales/zh/repo/ROADMAP.md)。
|
||||
要详细了解已实现和未实现的内容,以及 [稳定发布](https://en.wikipedia.org/wiki/Software_release_life_cycle#Stable_release) 的进展,请查看 [路线图](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/docs/locales/zh/repo/ROADMAP.md)。
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -129,7 +130,7 @@ GoToSocial 提供公开、不列出/悄悄公开、仅粉丝和私信(最好
|
|||
|
||||
GoToSocial 允许你通过 [互动规则](https://docs.gotosocial.org/zh-cn/latest/user_guide/settings/#默认互动规则) 选择谁可以回复你的贴文。你可以选择允许任何人回复贴文,仅允许朋友回复,等等。
|
||||
|
||||

|
||||

|
||||
|
||||
### 仅本站贴文
|
||||
|
||||
|
|
@ -143,7 +144,7 @@ GoToSocial 允许你选择将个人资料暴露为 RSS 订阅源,这样人们
|
|||
|
||||
使用 GoToSocial,你可以使用流行且易用的 Markdown 标记语言来撰写帖子,从而生成丰富的 HTML 贴文,支持引用段落、语法高亮代码块、列表、内嵌链接等。
|
||||
|
||||

|
||||

|
||||
|
||||
### 主题与自定义 CSS
|
||||
|
||||
|
|
@ -154,61 +155,61 @@ GoToSocial 允许你选择将个人资料暴露为 RSS 订阅源,这样人们
|
|||
<details>
|
||||
<summary>显示主题示例</summary>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-blurple-dark.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-blurple-dark.png"/>
|
||||
<figcaption>Blurple dark</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-blurple-light.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-blurple-light.png"/>
|
||||
<figcaption>Blurple light</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-brutalist-light.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-brutalist-light.png"/>
|
||||
<figcaption>Brutalist light</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-brutalist-dark.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-brutalist-dark.png"/>
|
||||
<figcaption>Brutalist dark</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-ecks-pee.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-ecks-pee.png"/>
|
||||
<figcaption>Ecks pee</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-midnight-trip.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-midnight-trip.png"/>
|
||||
<figcaption>Midnight trip</figcaption>
|
||||
</figure>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-moonlight-hunt.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-moonlight-hunt.png"/>
|
||||
<figcaption>Moonlight hunt</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-rainforest.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-rainforest.png"/>
|
||||
<figcaption>Rainforest</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-soft.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-soft.png"/>
|
||||
<figcaption>Soft</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-solarized-dark.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-solarized-dark.png"/>
|
||||
<figcaption>Solarized dark</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-solarized-light.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-solarized-light.png"/>
|
||||
<figcaption>Solarized light</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
<figure>
|
||||
<img src="https://raw.githubusercontent.com/superseriousbusiness/gotosocial/main/docs/overrides/public/theme-sunset.png"/>
|
||||
<img src="https://codeberg.org/superseriousbusiness/gotosocial/raw/branch/main/docs/overrides/public/theme-sunset.png"/>
|
||||
<figcaption>Sunset</figcaption>
|
||||
</figure>
|
||||
<hr/>
|
||||
|
|
@ -218,7 +219,7 @@ GoToSocial 允许你选择将个人资料暴露为 RSS 订阅源,这样人们
|
|||
|
||||
GoToSocial 仅需约 250-350MiB 的 RAM,并且只要求极少的 CPU 频率,因此非常适合单板计算机、旧笔记本和每月 5 美元的小 VPS。
|
||||
|
||||

|
||||

|
||||
|
||||
除数据库外无需其他依赖(也可以仅使用 SQLite!)。
|
||||
|
||||
|
|
@ -231,6 +232,7 @@ GoToSocial 仅需约 250-350MiB 的 RAM,并且只要求极少的 CPU 频率,
|
|||
- [导入/导出](https://docs.gotosocial.org/zh-cn/latest/admin/settings/#导入导出) 社区创建的域名允许和域名阻止列表,并[订阅](https://docs.gotosocial.org/zh-cn/latest/admin/domain_permission_subscriptions)这些列表。
|
||||
- HTTP 签名认证:GoToSocial 在发送和接收消息时要求 [HTTP 签名](https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-12),以确保消息不能被篡改,身份不能被伪造。
|
||||
- 内置 [Let's Encrypt](https://letsencrypt.org/) 的自动使用 HTTPS 支持。
|
||||
- 支持基于时间的一次性双因素认证代码(Google 认证器,LastPass 认证器等)。
|
||||
|
||||
### 多种联合模式
|
||||
|
||||
|
|
@ -256,17 +258,29 @@ GoToSocial 支持 [OpenID Connect (OIDC)](https://openid.net/connect/) 身份提
|
|||
|
||||
---
|
||||
|
||||
## 替代实现
|
||||
|
||||
不喜欢 GtS 但还是想搭建联邦宇宙服务?喜欢 GtS 但不想用测试版软件?有很多替代实现可能更适合你!这里列出一些我们知道的使用效果不错的实现(按字母顺序排列):
|
||||
|
||||
- [Akkoma](https://akkoma.social/):功能齐全的 ActivityPub 微博客,支持表情反应和引用贴文(Elixir)。
|
||||
- [Honk](https://humungus.tedunangst.com/r/honk/m/activitypub.7):极简、有特点的微博客服务端,特点是“没有点赞、没有收藏、没有投票、没有加星、没有鼓掌、没有互动计数”(Go)。
|
||||
- [Iceshrimp.net](https://iceshrimp.dev/iceshrimp/Iceshrimp.NET):Iceshrimp 的全新重写版本(.Net)。
|
||||
- [Mastodon](https://joinmastodon.org/):积极开发、广为人知、可扩展的 ActivityPub 微博客服务端(Ruby)。
|
||||
- [Snac2](https://codeberg.org/grunfink/snac2):简约、最小化的实例,系统要求非常低(可移植 C)。
|
||||
|
||||
---
|
||||
|
||||
## 已知问题
|
||||
|
||||
由于 GoToSocial 仍处于测试阶段,存在很多错误。我们使用 [GitHub issues](https://github.com/superseriousbusiness/gotosocial/issues?q=is%3Aissue+is%3Aopen+label%3Abug) 跟踪这些问题。
|
||||
由于 GoToSocial 仍处于测试阶段,存在很多错误。我们使用 [Codeberg issues](https://codeberg.org/superseriousbusiness/gotosocial/issues?q=is%3Aissue+is%3Aopen+label%3Abug) 跟踪这些问题。
|
||||
|
||||
由于每个 ActivityPub 服务端实现对协议的解释略有不同,有些服务端尚未与 GoToSocial 正常联合。我们在 [这个项目](https://github.com/superseriousbusiness/gotosocial/projects/4) 中跟踪这些问题。最终,我们希望确保任何可以与 Mastodon 正确联合的 ActivityPub 实现也能够与 GoToSocial 联合。
|
||||
由于每个 ActivityPub 服务端实现对协议的解释略有不同,有些服务端尚未与 GoToSocial 正常联合。我们在 [这个项目](https://codeberg.org/superseriousbusiness/gotosocial/projects/4) 中跟踪这些问题。最终,我们希望确保任何可以与 Mastodon 正确联合的 ActivityPub 实现也能够与 GoToSocial 联合。
|
||||
|
||||
---
|
||||
|
||||
## 安装 GoToSocial
|
||||
|
||||
查看我们的 [入门文档](https://docs.gotosocial.org/zh-cn/latest/getting_started/),并浏览我们的 [发布页面](https://github.com/superseriousbusiness/gotosocial/releases)。
|
||||
查看我们的 [入门文档](https://docs.gotosocial.org/zh-cn/latest/getting_started/),并浏览我们的 [发布页面](https://codeberg.org/superseriousbusiness/gotosocial/releases)。
|
||||
|
||||
<!--releases-start-->
|
||||
### 支持的平台
|
||||
|
|
@ -294,13 +308,13 @@ GoToSocial 支持 [OpenID Connect (OIDC)](https://openid.net/connect/) 身份提
|
|||
|
||||
#### 64位
|
||||
|
||||
64位平台需要以下(现在很常见的)CPU指令:
|
||||
对 64 位 CPU 的特性要求注释:
|
||||
|
||||
- x86-64需要SSE4.1(用于媒体解码和WASM SQLite)
|
||||
- x86_64 需要支持 SSE4.1 指令集 (自2010年左右起生产的CPU大多支持)
|
||||
|
||||
- Armv8需要ARM64大型系统扩展(ARM64 Large System Extensions)(特别是在使用WASM SQLite时)
|
||||
- ARM64 没有特定指令集要求, ARMv8 CPU(及后续版本)已支持全部所需特性。
|
||||
|
||||
如果没有这些指令,性能将会受到影响。在这些情况下,您可以尝试使用完全**不受支持、实验性的**[nowasm](https://docs.gotosocial.org/en/latest/advanced/builds/nowasm/)标签自行构建二进制文件。
|
||||
如果没有这些指令集,媒体处理性能将会受到影响(多数情况下,SQLite性能也会收到影响)。在这些情况下,您可以尝试使用完全**不受支持、实验性的**[nowasm](https://docs.gotosocial.org/zh-cn/latest/advanced/builds/nowasm/)标签自行构建二进制文件。
|
||||
|
||||
#### BSD系
|
||||
|
||||
|
|
@ -340,11 +354,11 @@ Docker 镜像 `superseriousbusiness/gotosocial:latest` 始终对应于最新稳
|
|||
|
||||
要使用二进制发布从主分支运行,请从我们的 [自托管 Minio S3 仓库](https://minio.s3.superseriousbusiness.org/browser/gotosocial-snapshots)下载适合你架构的 .tar.gz 文件。
|
||||
|
||||
S3 存储桶中的快照版二进制发布由 Github 提交哈希控制。要获取最新的,请按上次修改时间排序,或者查看 [这里的提交列表](https://github.com/superseriousbusiness/gotosocial/commits/main),复制最新的 SHA,并在 Minio 控制台过滤器中粘贴。快照二进制发布会在 28 天后过期,以降低我们的托管成本。
|
||||
S3 存储桶中的快照版二进制发布由代码提交哈希控制。要获取最新的,请按上次修改时间排序,或者查看 [这里的提交列表](https://codeberg.org/superseriousbusiness/gotosocial/commits/main),复制最新的 SHA,并在 Minio 控制台过滤器中粘贴。快照二进制发布会在 28 天后过期,以降低我们的托管成本。
|
||||
|
||||
### 从源代码构建
|
||||
|
||||
有关从源代码构建 GoToSocial 的说明,请参见 [CONTRIBUTING.md](https://github.com/superseriousbusiness/gotosocial/blob/main/docs/locales/zh/repo/CONTRIBUTING.md) 文件。
|
||||
有关从源代码构建 GoToSocial 的说明,请参见 [CONTRIBUTING.md](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/docs/locales/zh/repo/CONTRIBUTING.md) 文件。
|
||||
|
||||
### 第三方打包
|
||||
|
||||
|
|
@ -365,7 +379,7 @@ S3 存储桶中的快照版二进制发布由 Github 提交哈希控制。要获
|
|||
|
||||
## 参与贡献
|
||||
|
||||
你想为 GtS 作出贡献吗?太好了!❤️❤️❤️ 请查看问题页面,看看是否有你想参与的内容,并阅读 [CONTRIBUTING.md](https://github.com/superseriousbusiness/gotosocial/blob/main/docs/locales/zh/repo/CONTRIBUTING.md) 文件以获取指南并配置开发环境。
|
||||
你想为 GtS 作出贡献吗?太好了!❤️❤️❤️ 请查看问题页面,看看是否有你想参与的内容,并阅读 [CONTRIBUTING.md](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/docs/locales/zh/repo/CONTRIBUTING.md) 文件以获取指南并配置开发环境。
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -373,7 +387,7 @@ S3 存储桶中的快照版二进制发布由 Github 提交哈希控制。要获
|
|||
|
||||
如果你有问题或反馈,可以[加入我们的 Matrix 空间](https://matrix.to/#/#gotosocial-space:superseriousbusiness.org),地址是 `#gotosocial-space:superseriousbusiness.org`。这是联系开发人员的最快方式。你也可以发送邮件至 [admin@gotosocial.org](mailto:admin@gotosocial.org)。
|
||||
|
||||
对于错误和功能请求,请先查看是否[已有相应问题](https://github.com/superseriousbusiness/gotosocial/issues),如果没有,可以开一个新问题工单(issue),或者使用上述渠道提出请求(如果你没有 Github 账户的话)。
|
||||
对于错误和功能请求,请先查看是否[已有相应问题](https://codeberg.org/superseriousbusiness/gotosocial/issues),如果没有,可以开一个新问题工单(issue),或者使用上述渠道提出请求(如果你没有 Github 账户的话)。
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -428,15 +442,16 @@ GoToSocial 使用以下开源库、框架和工具,在此声明并致谢 💕
|
|||
- [mvdan.cc/xurls](https://github.com/mvdan/xurls); URL 解析正则表达式。 [BSD-3-Clause 许可证](https://spdx.org/licenses/BSD-3-Clause.html)。
|
||||
- [oklog/ulid](https://github.com/oklog/ulid); 顺序友好的数据库 ID 生成。 [Apache-2.0 许可证](https://spdx.org/licenses/Apache-2.0.html)。
|
||||
- [open-telemetry/opentelemetry-go](https://github.com/open-telemetry/opentelemetry-go); OpenTelemetry API + SDK。 [Apache-2.0 许可证](https://spdx.org/licenses/Apache-2.0.html)。
|
||||
- [pquerna/otp](https://github.com/pquerna/otp); 一次性代码工具。 [Apache-2.0 许可证](https://spdx.org/licenses/Apache-2.0.html)。
|
||||
- spf13:
|
||||
- [spf13/cobra](https://github.com/spf13/cobra); 命令行工具。 [Apache-2.0 许可证](https://spdx.org/licenses/Apache-2.0.html)。
|
||||
- [spf13/viper](https://github.com/spf13/viper); 配置管理。 [Apache-2.0 许可证](https://spdx.org/licenses/Apache-2.0.html)。
|
||||
- [stretchr/testify](https://github.com/stretchr/testify); 测试框架。 [MIT 许可证](https://spdx.org/licenses/MIT.html)。
|
||||
- superseriousbusiness:
|
||||
- [superseriousbusiness/activity](https://codeberg.org/superseriousbusiness/activity) 从 [go-fed/activity](https://github.com/go-fed/activity) 派生; Golang ActivityPub/ActivityStreams 库。 [BSD-3-Clause 许可证](https://spdx.org/licenses/BSD-3-Clause.html)。
|
||||
- [superseriousbusiness/exif-terminator](https://codeberg.org/superseriousbusiness/exif-terminator); EXIF 数据擦除。 [GNU AGPL v3 许可证](https://spdx.org/licenses/AGPL-3.0-or-later.html)。
|
||||
- [superseriousbusiness/httpsig](https://codeberg.org/superseriousbusiness/httpsig) 从 [go-fed/httpsig](https://github.com/go-fed/httpsig) 派生; 安全 HTTP 签名库。 [BSD-3-Clause 许可证](https://spdx.org/licenses/BSD-3-Clause.html)。
|
||||
- [superseriousbusiness/oauth2](https://codeberg.org/superseriousbusiness/oauth2) 从 [go-oauth2/oauth2](https://github.com/go-oauth2/oauth2) 派生; OAuth 服务器框架和令牌处理。 [MIT 许可证](https://spdx.org/licenses/MIT.html)。
|
||||
- [superseriousbusiness/activity](https://code.superseriousbusiness.org/activity) 从 [go-fed/activity](https://github.com/go-fed/activity) 派生; Golang ActivityPub/ActivityStreams 库。 [BSD-3-Clause 许可证](https://spdx.org/licenses/BSD-3-Clause.html)。
|
||||
- [superseriousbusiness/exif-terminator](https://code.superseriousbusiness.org/exif-terminator); EXIF 数据擦除。 [GNU AGPL v3 许可证](https://spdx.org/licenses/AGPL-3.0-or-later.html)。
|
||||
- [superseriousbusiness/httpsig](https://code.superseriousbusiness.org/httpsig) 从 [go-fed/httpsig](https://github.com/go-fed/httpsig) 派生; 安全 HTTP 签名库。 [BSD-3-Clause 许可证](https://spdx.org/licenses/BSD-3-Clause.html)。
|
||||
- [superseriousbusiness/oauth2](https://code.superseriousbusiness.org/oauth2) 从 [go-oauth2/oauth2](https://github.com/go-oauth2/oauth2) 派生; OAuth 服务器框架和令牌处理。 [MIT 许可证](https://spdx.org/licenses/MIT.html)。
|
||||
- [temoto/robotstxt](https://github.com/temoto/robotstxt); robots.txt 解析。 [MIT 许可证](https://spdx.org/licenses/MIT.html)。
|
||||
- [tdewolff/minify](https://github.com/tdewolff/minify); Markdown 帖文的 HTML 压缩。 [MIT 许可证](https://spdx.org/licenses/MIT.html)。
|
||||
- [uber-go/automaxprocs](https://github.com/uber-go/automaxprocs); GOMAXPROCS 自动化。 [MIT 许可证](https://spdx.org/licenses/MIT.html)。
|
||||
|
|
@ -454,10 +469,10 @@ GoToSocial 使用以下开源库、框架和工具,在此声明并致谢 💕
|
|||
|
||||
该许可具体适用于以下存储库内的文件和子目录:
|
||||
|
||||
- [树懒标志 png](https://github.com/superseriousbusiness/gotosocial/blob/main/web/assets/logo.png)
|
||||
- [树懒标志 webp](https://github.com/superseriousbusiness/gotosocial/blob/main/web/assets/logo.webp)
|
||||
- [树懒标志 svg](https://github.com/superseriousbusiness/gotosocial/blob/main/web/assets/logo.svg)
|
||||
- [所有默认头像](https://github.com/superseriousbusiness/gotosocial/blob/main/web/assets/default_avatars)
|
||||
- [树懒标志 png](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/web/assets/logo.png)
|
||||
- [树懒标志 webp](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/web/assets/logo.webp)
|
||||
- [树懒标志 svg](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/web/assets/logo.svg)
|
||||
- [所有默认头像](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/web/assets/default_avatars)
|
||||
|
||||
根据许可证条款,你可以:
|
||||
|
||||
|
|
@ -514,7 +529,7 @@ GoToSocial 欢迎与符合我们价值观的组织进行合作。在此对您的
|
|||
|
||||
<img src="https://nlnet.nl/logo/NGI/NGIZero-green.hex.svg" width="75" alt="NGIZero logo"/>
|
||||
|
||||
结合以上众筹来源,2023 年 GoToSocial Alpha 阶段的开发得到了 [NGI0 Entrust Fund](https://nlnet.nl/entrust/) 旗下的 [NLnet](https://nlnet.nl/) 提供的 50,000 欧元资助。详情请见[此处](https://nlnet.nl/project/GoToSocial/#ack)。成功的资助申请存档在[此处](https://github.com/superseriousbusiness/gotosocial/blob/main/archive/nlnet/2022-next-generation-internet-zero.md)。
|
||||
结合以上众筹来源,2023 年 GoToSocial Alpha 阶段的开发得到了 [NGI0 Entrust Fund](https://nlnet.nl/entrust/) 旗下的 [NLnet](https://nlnet.nl/) 提供的 50,000 欧元资助。详情请见[此处](https://nlnet.nl/project/GoToSocial/#ack)。成功的资助申请存档在[此处](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/archive/nlnet/2022-next-generation-internet-zero.md)。
|
||||
|
||||
2024 年 GoToSocial Beta 阶段的开发将从 [NGI0 Entrust Fund](https://nlnet.nl/entrust/) 旗下的 [NLnet](https://nlnet.nl/) 那里再获得 50,000 欧元的资助。
|
||||
|
||||
|
|
@ -524,7 +539,7 @@ GoToSocial 欢迎与符合我们价值观的组织进行合作。在此对您的
|
|||
|
||||

|
||||
|
||||
GoToSocial 是自由软件,采用 [GNU AGPL v3 许可](https://github.com/superseriousbusiness/gotosocial/blob/main/LICENSE)。我们鼓励你对代码进行派生和修改,进行各种实验。
|
||||
GoToSocial 是自由软件,采用 [GNU AGPL v3 许可](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/LICENSE)。我们鼓励你对代码进行派生和修改,进行各种实验。
|
||||
|
||||
有关 AGPL 和 GPL 许可之间的区别,请参阅[这里](https://www.gnu.org/licenses/why-affero-gpl.html),关于 GPL 许可(包括 AGPL)的常见问题解答,请参阅[这里](https://www.gnu.org/licenses/gpl-faq.html)。
|
||||
|
||||
|
|
|
|||
|
|
@ -47,13 +47,13 @@
|
|||
|
||||
### 2023 年中
|
||||
|
||||
- [x] **话题标签** -- 实现话题标签的联合与查看,让用户发现他们可能感兴趣的帖文。(完成! https://github.com/superseriousbusiness/gotosocial/pull/2032)。
|
||||
- [x] **话题标签** -- 实现话题标签的联合与查看,让用户发现他们可能感兴趣的帖文。(完成! https://codeberg.org/superseriousbusiness/gotosocial/pulls/2032)。
|
||||
|
||||
### 2023 年中到年底
|
||||
|
||||
- [x] **投票** -- 实现对投票的解析、创建和参与功能。(完成! https://github.com/superseriousbusiness/gotosocial/pull/2330)
|
||||
- [x] **静音帖文/贴文串** -- 取消订阅贴文串的回复通知;不在时间线上显示特定帖文。(完成! https://github.com/superseriousbusiness/gotosocial/pull/2278)
|
||||
- [x] **有限联合/白名单** -- 允许实例管理员默认阻止与其他实例的联合。(完成! https://github.com/superseriousbusiness/gotosocial/pull/2200)
|
||||
- [x] **投票** -- 实现对投票的解析、创建和参与功能。(完成! https://codeberg.org/superseriousbusiness/gotosocial/pulls/2330)
|
||||
- [x] **静音帖文/贴文串** -- 取消订阅贴文串的回复通知;不在时间线上显示特定帖文。(完成! https://codeberg.org/superseriousbusiness/gotosocial/pulls/2278)
|
||||
- [x] **有限联合/白名单** -- 允许实例管理员默认阻止与其他实例的联合。(完成! https://codeberg.org/superseriousbusiness/gotosocial/pulls/2200)
|
||||
|
||||
### 2024 年初
|
||||
|
||||
|
|
@ -73,10 +73,10 @@
|
|||
- [x] **无评论区的帖文** -- 设计无评论区帖文的相关逻辑,让用户创建无评论区的帖文。
|
||||
- [x] **屏蔽/允许列表订阅** -- 允许实例管理员为其实例订阅屏蔽/允许列表。
|
||||
- [x] **私信对话视图** -- 让用户能够轻松浏览他们参与的所有私信对话。
|
||||
- [ ] **Oauth 令牌管理** -- 通过设置面板创建/查看/吊销 OAuth 令牌。
|
||||
- [ ] **贴文编辑支持** -- 编辑已创建的贴文,而无需删除并重新编辑。并正确地将编辑传播出去。
|
||||
- [x] **Oauth 令牌管理** -- 通过设置面板创建/查看/吊销 OAuth 令牌。
|
||||
- [x] **贴文编辑支持** -- 编辑已创建的贴文,而无需删除并重新编辑。并正确地将编辑传播出去。
|
||||
- [ ] **Fediverse 中继支持** -- 与中继通信,发布和接收帖文。
|
||||
- [ ] **两步验证 (2fa)** -- 允许用户通过设置面板为其账户启用 2FA,并在登录时实施 2FA。
|
||||
- [x] **两步验证 (2fa)** -- 允许用户通过设置面板为其账户启用 2FA,并在登录时实施 2FA。
|
||||
- [ ] **管理:附加内容警告/将所有内容标记为敏感内容**。
|
||||
|
||||
更多内容待定!
|
||||
|
|
|
|||
1
docs/locales/zh/repo/SECURITY.md
Normal file
1
docs/locales/zh/repo/SECURITY.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
请将安全问题反馈发送至:admin@gotosocial.org
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
## 如何导入你的帖文
|
||||
|
||||
当前,该过程需要借助利用 GTS API 的第三方工具。未来,我们可能会将此功能整合到 GoToSocial 内部:请关注 [issue #2](https://github.com/superseriousbusiness/gotosocial/issues/2) 以获取最新动态。
|
||||
当前,该过程需要借助利用 GTS API 的第三方工具。未来,我们可能会将此功能整合到 GoToSocial 内部:请关注 [issue #2](https://codeberg.org/superseriousbusiness/gotosocial/issues/2) 以获取最新动态。
|
||||
|
||||
[`slurp`](https://github.com/VyrCossont/slurp)(由 GTS 开发者 Vyr Cossont 开发)可以导入来自 [Mastodon 归档](https://github.com/VyrCossont/slurp?tab=readme-ov-file#importing-a-mastodon-archive) 和 [Pixelfed 归档](https://github.com/VyrCossont/slurp?tab=readme-ov-file#importing-a-pixelfed-archive) 的帖文。请查阅 `slurp` 的文档、[Mastodon 关于导出数据的说明](https://docs.joinmastodon.org/user/moving/#export) 以及 Jeff Sikes 的文章 [“使用 Slurp 将 Pixelfed 帖文导入 GoToSocial”](https://box464.com/posts/gotosocial-slurp/) 以了解更多细节。你需要熟悉命令行基础,并提前安装 Git 和 Go 编译器。
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ GoToSocial 允许你在贴文中附加媒体文件,大多数客户端会在贴
|
|||
为了避免泄漏你的位置信息,GoToSocial 努力在上传媒体时通过清零 Exif 数据点移除 Exif 信息。
|
||||
|
||||
!!! danger "危险"
|
||||
为了方便和保护隐私,GoToSocial 在上传图片文件时会自动移除 Exif 标签。然而,**无法自动移除 mp4 视频的 Exif 数据**(参见 [#2577](https://github.com/superseriousbusiness/gotosocial/issues/2577))。
|
||||
为了方便和保护隐私,GoToSocial 在上传图片文件时会自动移除 Exif 标签。然而,**无法自动移除 mp4 视频的 Exif 数据**(参见 [#2577](https://codeberg.org/superseriousbusiness/gotosocial/issues/2577))。
|
||||
|
||||
在你将视频上传至 GoToSocial 之前,建议确保该视频的 Exif 数据标签已经被移除。你可以在线找到多种工具和服务来做到这一点。
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,30 @@ GoToSocial 提供主题供你选择,以更改账户的外观和氛围。
|
|||
!!! tip "添加更多主题"
|
||||
实例管理员可以通过将 CSS 文件放入 `web/assets/themes` 文件夹中来添加更多主题。有关详细信息,请参阅管理员文档中的[主题](../admin/themes.md)部分。
|
||||
|
||||
### 选择布局
|
||||
|
||||
使用 GoToSocial,你可以为你的账户页的网页视图选择两种不同的布局。
|
||||
|
||||
这个设置不会影响 API 的行为,也不会影响客户端应用的外观或工作方式,它纯粹是网页视图的一个外观上的改变。
|
||||
|
||||
这两种布局都只会显示顶层贴文(或顶层贴文中的媒体),不显示回复或转发,并且会遵守[在你的账户页上显示的贴文的可见性级别](#visibility-level-of-posts-to-show-on-your-profile)设置。
|
||||
|
||||
#### 微博
|
||||
|
||||
GtS 经典的微博客布局。你的账户页被分成两列,显示你的简介和最近/置顶的贴文。
|
||||
|
||||
如果你主要发布文字,或者文字与媒体的混合内容,这是一个不错的选择。
|
||||
|
||||

|
||||
|
||||
#### 画廊
|
||||
|
||||
类似 Instagram 的布局。贴文不会在你的账户页上直接显示,反之,你最近/置顶的媒体会以画廊网格视图的形式显示。贴文(及其回复)仍然可以通过链接访问。
|
||||
|
||||
如果你主要发布媒体,这是一个不错的选择。
|
||||
|
||||

|
||||
|
||||
### 基本信息
|
||||
|
||||
#### 昵称
|
||||
|
|
@ -201,7 +225,9 @@ markdown 设置表示你的贴文应被按 Markdown 格式解析,这是一种
|
|||
|
||||
随着更多 ActivityPub 服务端推出互动规则支持,这个问题有望减少,但在此期间,GoToSocial 只能在“尽力而为”范围内进行尝试,以根据你设定的规则限制与贴文的互动。
|
||||
|
||||
## 电子邮箱和密码
|
||||
## 账户
|
||||
|
||||
在账户部分,你可以设置你的电子邮箱和密码,以及为你的账户设置双因素验证。
|
||||
|
||||
### 更改电子邮箱
|
||||
|
||||
|
|
@ -221,6 +247,24 @@ markdown 设置表示你的贴文应被按 Markdown 格式解析,这是一种
|
|||
|
||||
有关 GoToSocial 如何管理密码的更多信息,请参阅[密码管理文档](./password_management.md)。
|
||||
|
||||
### 双因素身份验证
|
||||
|
||||
你可以使用面板的这一部分为你的账户启用双因素身份验证。
|
||||
|
||||
启用双因素身份验证后,除密码外,你还必须在登录时提供一个来自你配置的验证器应用(Google 验证器、LastPass 验证器等)的代码。
|
||||
|
||||
要启用双因素身份验证,请在移动设备上安装一个验证器应用,然后用它扫描二维码。你也可以手动复制双因素验证密钥并将其粘贴到验证器中。完成后,输入验证器中的代码,验证验证器和服务器是否正确同步。
|
||||
|
||||
成功后,你将看到一个包含八个双因素验证备份/恢复代码的列表。将这些代码保存在安全的地方(如密码管理器)。如果你失去了对身份验证程序的访问权限,例如丢失了设备,那么可以在登录时使用这些代码之一来代替 2FA 代码。这些代码使用后将无法再次使用。如果你用完了全部八个恢复代码,你应该禁用并重新启用 2FA,以生成新的密码。
|
||||
|
||||
要禁用双因素验证,请在表单中输入当前密码,然后点击 "禁用 2FA "按钮。
|
||||
|
||||
!!! tip "提示"
|
||||
建议使用双因素身份验证,因为它可以增加坏人通过猜测密码登录账户的难度,因为他们还需要访问你的身份验证设备。有关不同类型 2FA 的更多信息,请参阅 [互联网常见双因素验证类型指南](https://www.eff.org/deeplinks/2017/09/guide-common-types-two-factor-authentication-web)。
|
||||
|
||||
!!! info "注意"
|
||||
如果你的实例使用 OIDC 作为授权/身份提供商,则无法在设置面板中启用 2FA,此时应联系 OIDC 提供商管理双因素身份验证。
|
||||
|
||||
## 迁移
|
||||
|
||||
在迁移部分,你可以管理与与账户别名、迁移到其他账户或从其他账户迁移相关的设置。
|
||||
|
|
@ -289,3 +333,71 @@ markdown 设置表示你的贴文应被按 Markdown 格式解析,这是一种
|
|||
!!! note "附注"
|
||||
|
||||
令牌的“最后使用”时间是近似值,可能存在正负一小时的误差。
|
||||
|
||||
|
||||
## 应用
|
||||
|
||||
在“应用”部分,您可以新建托管的 OAuth 客户端应用,并搜索你已创建的应用。
|
||||
|
||||
### 什么是 OAuth 客户端应用?
|
||||
|
||||
GoToSocial OAuth 客户端应用等同于 [Auth0 身份组文档](https://auth0.com/intro-to-iam/what-is-oauth-2#oauth20-roles) 中描述的 OAuth 2.0 客户端。
|
||||
|
||||
创建一个应用后,你可以作为你账户的“资源所有者”,通过访问令牌授予该应用访问你账户的权限。应用可以使用此令牌,以“你的身份”或“代表你”与 GoToSocial 客户端 API 进行交互。
|
||||
|
||||
例如,当使用 Tusky 登录你的 GoToSocial 账户时,Tusky 首先在你的实例作为一个 OAuth 客户端应用注册,然后请求实例将你重定向到一个页面。在该页面,你可以使用你的 GoToSocial 邮箱地址和密码登录,以授权 Tusky 获取访问令牌。随后,Tusky 存储并在所有后续请求中使用该访问令牌,来执行你指示的操作:发布贴文、读取时间线等。
|
||||
|
||||
OAuth 客户端应用的优势在于它们从不存储(甚至看不到)你的密码:它们仅使用访问令牌以你的身份执行操作。该令牌可以被撤销,这样应用就无法再访问你的账户,而你无需更改密码(请参阅 [访问令牌](#访问令牌))。
|
||||
|
||||
!!! note "托管应用程序 vs 非托管应用程序"
|
||||
*托管* 应用程序是你通过设置面板自行创建的应用程序,你有权为其请求令牌和删除它。这与像 Tusky 这样的应用程序有所不同,后者不被视为 *托管* 应用程序,因为它们不是由用户在设置面板中创建的。
|
||||
|
||||
### 什么是重定向 URI?
|
||||
|
||||
重定向 URI 提供了一种安全措施,可防止应用程序在授权后重定向到恶意地址。OAuth 2.0 文档对此有最好的解释,请参阅:
|
||||
|
||||
- [重定向 URI](https://www.oauth.com/oauth2-servers/redirect-uris/)
|
||||
- [重定向 URL 注册](https://www.oauth.com/oauth2-servers/redirect-uris/redirect-uri-registration/)
|
||||
|
||||
任何需要你为之创建 OAuth 应用的服务通常会告知你,在创建应用时需要输入哪些重定向 URI。
|
||||
|
||||
### 什么是范围?
|
||||
|
||||
范围是一个以空格分隔的标识符列表,可以在创建应用(或为其获取令牌)时指定,以防止应用或其访问令牌访问超出其工作所需的数据。
|
||||
|
||||
例如,如果你创建一个仅具有 `read` 范围的应用,那么该应用拥有的任何令牌将仅对你的账户具有 `read` 访问权限:它们将无法以你的身份执行发布、删除或其他 *写入* 类型的操作。
|
||||
|
||||
GoToSocial 提供了一系列与 Mastodon API 非常相似的范围。您可以在这里查看范围列表(及其作用):https://docs.gotosocial.org/zh-cn/latest/api/swagger/。
|
||||
|
||||
与 Mastodon 类似,GoToSocial 允许你在创建应用 *以及* 随后请求令牌时指定范围。因此,你可以创建一个具有 `read write` 范围的应用,但请求一个仅具有 `read` 范围的令牌,或者请求一个更小的范围,如 `read:accounts`。请求令牌时指定的任何范围都必须被应用所被允许的范围所覆盖。例如,如果您的应用只有 `read` 范围,您就不能请求具有 `write` 范围的令牌。
|
||||
|
||||
有关范围的更多一般信息,请参阅 OAuth 2.0 文档:
|
||||
|
||||
- [范围](https://www.oauth.com/oauth2-servers/scope/)
|
||||
- [定义范围](https://www.oauth.com/oauth2-servers/scope/defining-scopes/)
|
||||
|
||||
### 搜索应用程序
|
||||
|
||||
使用此部分,你可以查看通过设置面板创建的应用程序的概览,并单击某个应用程序以进入该应用程序的详情视图。
|
||||
|
||||
### 新建应用程序
|
||||
|
||||

|
||||
|
||||
要创建一个新的托管 OAuth 应用,你必须至少提供应用的名称。如果需要,也可以提供网站地址。
|
||||
|
||||
如果你不提供任何范围,则应用将默认具有 `read` 范围。
|
||||
|
||||
如果你不指定任何重定向 URI,则应用将默认使用非常规重定向 URI `urn:ietf:wg:oauth:2.0:oob`。
|
||||
|
||||
如果你希望使用设置面板轻松地为你的应用获取访问令牌,那么你必须在重定向 URI 列表中包含给定的设置面板回调 URL。其格式为 `https://[your_instance_host]/settings/user/applications/callback`。
|
||||
|
||||
### 应用程序详情
|
||||
|
||||

|
||||
|
||||
在应用的详情页面上,你可以查看应用的客户端 ID 和客户端密钥,你可以在像 `curl` 这样的命令行工具中使用它们来手动获取该应用的授权码和访问令牌。
|
||||
|
||||
如果你在重定向 URI 列表中包含了设置面板回调 URL,你也可以使用此页面为你的账户请求访问令牌。这将把你重定向到你实例的登录页面,你必须在该页面提供你的凭据以授权你的应用。然后你将再次被重定向到设置面板回调 URL,在那里你可以接收你的访问令牌。
|
||||
|
||||
你也可以使用此页面删除你的应用。当托管应用被删除时,所有通过该应用创建的令牌也将被删除,因此请确保仅在你的应用未使用时才执行此操作。
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ The limitations on interactions with other accounts are an intentional politenes
|
|||
|
||||
## How to import your posts
|
||||
|
||||
The process currently requires third-party tools which use the GTS API. In the future, we may integrate this into GoToSocial itself: please follow [issue #2](https://github.com/superseriousbusiness/gotosocial/issues/2) for updates.
|
||||
The process currently requires third-party tools which use the GTS API. In the future, we may integrate this into GoToSocial itself: please follow [issue #2](https://codeberg.org/superseriousbusiness/gotosocial/issues/2) for updates.
|
||||
|
||||
[`slurp`](https://github.com/VyrCossont/slurp) (by GTS developer Vyr Cossont) can import [post archives from Mastodon](https://github.com/VyrCossont/slurp?tab=readme-ov-file#importing-a-mastodon-archive) as well as [from Pixelfed](https://github.com/VyrCossont/slurp?tab=readme-ov-file#importing-a-pixelfed-archive). Please consult `slurp`'s docs, [Mastodon's instructions for exporting your data](https://docs.joinmastodon.org/user/moving/#export), and ["Importing Pixelfed Posts to GoToSocial with Slurp" by Jeff Sikes](https://box464.com/posts/gotosocial-slurp/) for more details. You'll need to be familiar with command-line basics, and have Git and a Go compiler installed.
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ Traditionally, these Exif data points are used by photographers to help them cat
|
|||
To avoid leaking information about your location, GoToSocial makes a best-effort attempt to remove Exif information from media when you upload it, by zeroing out Exif data points.
|
||||
|
||||
!!! danger
|
||||
For your convenience and privacy, GoToSocial currently removes Exif tags from image files when they are uploaded. However, **automated removal of Exif data from mp4 videos is not currently supported** (see [#2577](https://github.com/superseriousbusiness/gotosocial/issues/2577)).
|
||||
For your convenience and privacy, GoToSocial currently removes Exif tags from image files when they are uploaded. However, **automated removal of Exif data from mp4 videos is not currently supported** (see [#2577](https://codeberg.org/superseriousbusiness/gotosocial/issues/2577)).
|
||||
|
||||
Before you upload a video to GoToSocial, we recommend ensuring that Exif data tags are already removed from the video. You can find various tools and services online for doing this.
|
||||
|
||||
|
|
|
|||
35
go.mod
35
go.mod
|
|
@ -1,4 +1,4 @@
|
|||
module github.com/superseriousbusiness/gotosocial
|
||||
module code.superseriousbusiness.org/gotosocial
|
||||
|
||||
go 1.23.0
|
||||
|
||||
|
|
@ -11,6 +11,10 @@ replace github.com/go-swagger/go-swagger => codeberg.org/superseriousbusiness/go
|
|||
replace modernc.org/sqlite => gitlab.com/NyaaaWhatsUpDoc/sqlite v1.37.0-concurrency-workaround
|
||||
|
||||
require (
|
||||
code.superseriousbusiness.org/activity v1.15.0
|
||||
code.superseriousbusiness.org/exif-terminator v0.11.0
|
||||
code.superseriousbusiness.org/httpsig v1.4.0
|
||||
code.superseriousbusiness.org/oauth2/v4 v4.8.0
|
||||
codeberg.org/gruf/go-bytes v1.0.2
|
||||
codeberg.org/gruf/go-bytesize v1.0.3
|
||||
codeberg.org/gruf/go-byteutil v1.3.0
|
||||
|
|
@ -28,16 +32,12 @@ require (
|
|||
codeberg.org/gruf/go-sched v1.2.4
|
||||
codeberg.org/gruf/go-storage v0.2.0
|
||||
codeberg.org/gruf/go-structr v0.9.6
|
||||
codeberg.org/superseriousbusiness/activity v1.13.0-gts
|
||||
codeberg.org/superseriousbusiness/exif-terminator v0.10.0
|
||||
codeberg.org/superseriousbusiness/httpsig v1.3.0-SSB
|
||||
codeberg.org/superseriousbusiness/oauth2/v4 v4.7.0-SSB
|
||||
github.com/DmitriyVTitov/size v1.5.0
|
||||
github.com/KimMachineGun/automemlimit v0.7.1
|
||||
github.com/SherClockHolmes/webpush-go v1.4.0
|
||||
github.com/buckket/go-blurhash v1.1.0
|
||||
github.com/coreos/go-oidc/v3 v3.12.0
|
||||
github.com/gin-contrib/cors v1.7.4
|
||||
github.com/coreos/go-oidc/v3 v3.14.1
|
||||
github.com/gin-contrib/cors v1.7.5
|
||||
github.com/gin-contrib/gzip v1.2.3
|
||||
github.com/gin-contrib/sessions v1.0.3
|
||||
github.com/gin-gonic/gin v1.10.0
|
||||
|
|
@ -52,9 +52,9 @@ require (
|
|||
github.com/k3a/html2text v1.2.1
|
||||
github.com/microcosm-cc/bluemonday v1.0.27
|
||||
github.com/miekg/dns v1.1.65
|
||||
github.com/minio/minio-go/v7 v7.0.89
|
||||
github.com/minio/minio-go/v7 v7.0.91
|
||||
github.com/mitchellh/mapstructure v1.5.0
|
||||
github.com/ncruces/go-sqlite3 v0.25.0
|
||||
github.com/ncruces/go-sqlite3 v0.25.1
|
||||
github.com/oklog/ulid v1.3.1
|
||||
github.com/pquerna/otp v1.4.0
|
||||
github.com/prometheus/client_golang v1.22.0
|
||||
|
|
@ -73,34 +73,34 @@ require (
|
|||
github.com/uptrace/bun/dialect/sqlitedialect v1.2.11
|
||||
github.com/uptrace/bun/extra/bunotel v1.2.11
|
||||
github.com/wagslane/go-password-validator v0.3.0
|
||||
github.com/yuin/goldmark v1.7.10
|
||||
github.com/yuin/goldmark v1.7.11
|
||||
go.opentelemetry.io/otel v1.35.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.56.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.57.0
|
||||
go.opentelemetry.io/otel/metric v1.35.0
|
||||
go.opentelemetry.io/otel/sdk v1.35.0
|
||||
go.opentelemetry.io/otel/sdk/metric v1.34.0
|
||||
go.opentelemetry.io/otel/sdk/metric v1.35.0
|
||||
go.opentelemetry.io/otel/trace v1.35.0
|
||||
go.uber.org/automaxprocs v1.6.0
|
||||
golang.org/x/crypto v0.37.0
|
||||
golang.org/x/image v0.24.0
|
||||
golang.org/x/image v0.26.0
|
||||
golang.org/x/net v0.39.0
|
||||
golang.org/x/oauth2 v0.29.0
|
||||
golang.org/x/sys v0.32.0
|
||||
golang.org/x/text v0.24.0
|
||||
gopkg.in/mcuadros/go-syslog.v2 v2.3.0
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
modernc.org/sqlite v0.0.0-00010101000000-000000000000
|
||||
modernc.org/sqlite v1.37.0
|
||||
mvdan.cc/xurls/v2 v2.6.0
|
||||
)
|
||||
|
||||
require (
|
||||
code.superseriousbusiness.org/go-jpeg-image-structure/v2 v2.3.0 // indirect
|
||||
code.superseriousbusiness.org/go-png-image-structure/v2 v2.3.0 // indirect
|
||||
codeberg.org/gruf/go-fastpath/v2 v2.0.0 // indirect
|
||||
codeberg.org/gruf/go-mangler v1.4.4 // indirect
|
||||
codeberg.org/gruf/go-maps v1.0.4 // indirect
|
||||
codeberg.org/superseriousbusiness/go-jpeg-image-structure/v2 v2.1.0-SSB // indirect
|
||||
codeberg.org/superseriousbusiness/go-png-image-structure/v2 v2.1.0-SSB // indirect
|
||||
github.com/Masterminds/goutils v1.1.1 // indirect
|
||||
github.com/Masterminds/semver/v3 v3.2.1 // indirect
|
||||
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
|
||||
|
|
@ -125,7 +125,6 @@ require (
|
|||
github.com/gabriel-vasile/mimetype v1.4.8 // indirect
|
||||
github.com/gin-contrib/sse v1.0.0 // indirect
|
||||
github.com/go-errors/errors v1.1.1 // indirect
|
||||
github.com/go-fed/httpsig v1.1.0 // indirect
|
||||
github.com/go-ini/ini v1.67.0 // indirect
|
||||
github.com/go-jose/go-jose/v4 v4.0.5 // indirect
|
||||
github.com/go-logr/logr v1.4.2 // indirect
|
||||
|
|
|
|||
65
go.sum
generated
65
go.sum
generated
|
|
@ -1,3 +1,15 @@
|
|||
code.superseriousbusiness.org/activity v1.15.0 h1:XwdO/1ssry8GCLWDFlUxSb+lNpUvdjkKG3HVHTEkvi4=
|
||||
code.superseriousbusiness.org/activity v1.15.0/go.mod h1:BTMWJIAuwDH1w+ieRP5N+T5LipbXjw35U6KZy0V/xdg=
|
||||
code.superseriousbusiness.org/exif-terminator v0.11.0 h1:Hof0MCcsa+1fS17gf86fTTZ8AQnMY9h9kzcc+2C6mVg=
|
||||
code.superseriousbusiness.org/exif-terminator v0.11.0/go.mod h1:9sutT1axa/kSdlPLlRFjCNKmyo/KNx8eX3XZvWBlAEY=
|
||||
code.superseriousbusiness.org/go-jpeg-image-structure/v2 v2.3.0 h1:r9uq8StaSHYKJ8DklR9Xy+E9c40G1Z8yj5TRGi8L6+4=
|
||||
code.superseriousbusiness.org/go-jpeg-image-structure/v2 v2.3.0/go.mod h1:IK1OlR6APjVB3E9tuYGvf0qXMrwP+TrzcHS5rf4wffQ=
|
||||
code.superseriousbusiness.org/go-png-image-structure/v2 v2.3.0 h1:I512jiIeXDC4//2BeSPrRM2ZS4wpBKUaPeTPxakMNGA=
|
||||
code.superseriousbusiness.org/go-png-image-structure/v2 v2.3.0/go.mod h1:SNHomXNW88o1pFfLHpD4KsCZLfcr4z5dm+xcX5SV10A=
|
||||
code.superseriousbusiness.org/httpsig v1.4.0 h1:g9+KQMoTG0oR0II5gYb5pVVdNjbc7CiiuqK8vcZjeQg=
|
||||
code.superseriousbusiness.org/httpsig v1.4.0/go.mod h1:i2AKpj/WbA/o/UTvia9TAREzt0jP1AH3T1Uxjyhdzlw=
|
||||
code.superseriousbusiness.org/oauth2/v4 v4.8.0 h1:4LVXoPJXKgmDfwDegzBQPNpsdleMaL6YmDgFi6UDgEE=
|
||||
code.superseriousbusiness.org/oauth2/v4 v4.8.0/go.mod h1:+RLRBXPkjP/VhIC/46dcZkx3t5IvBSJYOjVCPgeWors=
|
||||
codeberg.org/gruf/go-bytes v1.0.2 h1:malqE42Ni+h1nnYWBUAJaDDtEzF4aeN4uPN8DfMNNvo=
|
||||
codeberg.org/gruf/go-bytes v1.0.2/go.mod h1:1v/ibfaosfXSZtRdW2rWaVrDXMc9E3bsi/M9Ekx39cg=
|
||||
codeberg.org/gruf/go-bytesize v1.0.3 h1:Tz8tCxhPLeyM5VryuBNjUHgKmLj4Bx9RbPaUSA3qg6g=
|
||||
|
|
@ -40,20 +52,8 @@ codeberg.org/gruf/go-storage v0.2.0 h1:mKj3Lx6AavEkuXXtxqPhdq+akW9YwrnP16yQBF7K5
|
|||
codeberg.org/gruf/go-storage v0.2.0/go.mod h1:o3GzMDE5QNUaRnm/daUzFqvuAaC4utlgXDXYO79sWKU=
|
||||
codeberg.org/gruf/go-structr v0.9.6 h1:FSbJ1A0ubTQB82rC0K4o6qyiqrDGH1t9ivttm8Zy64o=
|
||||
codeberg.org/gruf/go-structr v0.9.6/go.mod h1:9k5hYztZ4PsBS+m1v5hUTeFiVUBTLF5VA7d9cd1OEMs=
|
||||
codeberg.org/superseriousbusiness/activity v1.13.0-gts h1:4WZLc/SNt+Vt5x2UjL2n6V5dHlIL9ECudUPx8Ld5rxw=
|
||||
codeberg.org/superseriousbusiness/activity v1.13.0-gts/go.mod h1:enxU1Lva4OcK6b/NBXscoHSEgEMsKJvdHrQFifQxp4o=
|
||||
codeberg.org/superseriousbusiness/exif-terminator v0.10.0 h1:FiLX/AK07tzceS36I+kOP2aEH+aytjPSIlFoYePMEyg=
|
||||
codeberg.org/superseriousbusiness/exif-terminator v0.10.0/go.mod h1:c/mCytx/+fisOZeVXtjCpXld/SeZb3VsD1vj3oPAihA=
|
||||
codeberg.org/superseriousbusiness/go-jpeg-image-structure/v2 v2.1.0-SSB h1:v2shEkOPgydTL0n44EFPsDT9dsEP7KRG85aPnojCYkI=
|
||||
codeberg.org/superseriousbusiness/go-jpeg-image-structure/v2 v2.1.0-SSB/go.mod h1:Ba/VzIqzDHqqKk5jg+7uFpUsHmdDOsuWLodbamD80jU=
|
||||
codeberg.org/superseriousbusiness/go-png-image-structure/v2 v2.1.0-SSB h1:Lqi70gvqNuHyik0gUNrBwElvFUP7A3W1FYLVV5lUmbQ=
|
||||
codeberg.org/superseriousbusiness/go-png-image-structure/v2 v2.1.0-SSB/go.mod h1:99rP8gsZoCSUj+/lLdpV9+i86ujLdKSoUjvuxbgvN4M=
|
||||
codeberg.org/superseriousbusiness/go-swagger v0.31.0-gts-go1.23-fix h1:+JvBZqsQfdT+ROnk2DkvXsKQ9QBorKKKBk5fBqw62I8=
|
||||
codeberg.org/superseriousbusiness/go-swagger v0.31.0-gts-go1.23-fix/go.mod h1:WSigRRWEig8zV6t6Sm8Y+EmUjlzA/HoaZJ5edupq7po=
|
||||
codeberg.org/superseriousbusiness/httpsig v1.3.0-SSB h1:0a2fQSgMZA3/k+zjb2Ot+kwzpWFHOVEGQR2t49NhglA=
|
||||
codeberg.org/superseriousbusiness/httpsig v1.3.0-SSB/go.mod h1:mkfkHGdE2SCbNBHySjJZSDr3LHtwZb1Yjgc6GYPwAQM=
|
||||
codeberg.org/superseriousbusiness/oauth2/v4 v4.7.0-SSB h1:UAFZKgUaeQEoHDmawh9DWXFopJnADfkiDo/CLAtWISc=
|
||||
codeberg.org/superseriousbusiness/oauth2/v4 v4.7.0-SSB/go.mod h1:fAEs7S0vD9yB+h7zBUWfAqwdbVqF4n8FcTnXpJC//AM=
|
||||
github.com/DmitriyVTitov/size v1.5.0 h1:/PzqxYrOyOUX1BXj6J9OuVRVGe+66VL4D9FlUaW515g=
|
||||
github.com/DmitriyVTitov/size v1.5.0/go.mod h1:le6rNI4CoLQV1b9gzp1+3d7hMAD/uu2QcJ+aYbNgiU0=
|
||||
github.com/KimMachineGun/automemlimit v0.7.1 h1:QcG/0iCOLChjfUweIMC3YL5Xy9C3VBeNmCZHrZfJMBw=
|
||||
|
|
@ -95,8 +95,8 @@ github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJ
|
|||
github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
|
||||
github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08 h1:ox2F0PSMlrAAiAdknSRMDrAr8mfxPCfSZolH+/qQnyQ=
|
||||
github.com/cnf/structhash v0.0.0-20201127153200-e1b16c1ebc08/go.mod h1:pCxVEbcm3AMg7ejXyorUXi6HQCzOIBf7zEDVPtw0/U4=
|
||||
github.com/coreos/go-oidc/v3 v3.12.0 h1:sJk+8G2qq94rDI6ehZ71Bol3oUHy63qNYmkiSjrc/Jo=
|
||||
github.com/coreos/go-oidc/v3 v3.12.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0=
|
||||
github.com/coreos/go-oidc/v3 v3.14.1 h1:9ePWwfdwC4QKRlCXsJGou56adA/owXczOzwKdOumLqk=
|
||||
github.com/coreos/go-oidc/v3 v3.14.1/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
|
|
@ -135,8 +135,8 @@ github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3G
|
|||
github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8=
|
||||
github.com/gavv/httpexpect v2.0.0+incompatible h1:1X9kcRshkSKEjNJJxX9Y9mQ5BRfbxU5kORdjhlA1yX8=
|
||||
github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
|
||||
github.com/gin-contrib/cors v1.7.4 h1:/fC6/wk7rCRtqKqki8lLr2Xq+hnV49aXDLIuSek9g4k=
|
||||
github.com/gin-contrib/cors v1.7.4/go.mod h1:vGc/APSgLMlQfEJV5NAzkrAHb0C8DetL3K6QZuvGii0=
|
||||
github.com/gin-contrib/cors v1.7.5 h1:cXC9SmofOrRg0w9PigwGlHG3ztswH6bqq4vJVXnvYMk=
|
||||
github.com/gin-contrib/cors v1.7.5/go.mod h1:4q3yi7xBEDDWKapjT2o1V7mScKDDr8k+jZ0fSquGoy0=
|
||||
github.com/gin-contrib/gzip v1.2.3 h1:dAhT722RuEG330ce2agAs75z7yB+NKvX/ZM1r8w0u2U=
|
||||
github.com/gin-contrib/gzip v1.2.3/go.mod h1:ad72i4Bzmaypk8M762gNXa2wkxxjbz0icRNnuLJ9a/c=
|
||||
github.com/gin-contrib/sessions v1.0.3 h1:AZ4j0AalLsGqdrKNbbrKcXx9OJZqViirvNGsJTxcQps=
|
||||
|
|
@ -149,8 +149,6 @@ github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm
|
|||
github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
|
||||
github.com/go-errors/errors v1.1.1 h1:ljK/pL5ltg3qoN+OtN6yCv9HWSfMwxSx90GJCZQxYNg=
|
||||
github.com/go-errors/errors v1.1.1/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
|
||||
github.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI=
|
||||
github.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM=
|
||||
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
|
||||
github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
|
||||
github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE=
|
||||
|
|
@ -305,8 +303,8 @@ github.com/minio/crc64nvme v1.0.1 h1:DHQPrYPdqK7jQG/Ls5CTBZWeex/2FMS3G5XGkycuFrY
|
|||
github.com/minio/crc64nvme v1.0.1/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg=
|
||||
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
|
||||
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
|
||||
github.com/minio/minio-go/v7 v7.0.89 h1:hx4xV5wwTUfyv8LarhJAwNecnXpoTsj9v3f3q/ZkiJU=
|
||||
github.com/minio/minio-go/v7 v7.0.89/go.mod h1:2rFnGAp02p7Dddo1Fq4S2wYOfpF0MUTSeLTRC90I204=
|
||||
github.com/minio/minio-go/v7 v7.0.91 h1:tWLZnEfo3OZl5PoXQwcwTAPNNrjyWwOh6cbZitW5JQc=
|
||||
github.com/minio/minio-go/v7 v7.0.91/go.mod h1:uvMUcGrpgeSAAI6+sD3818508nUyMULw94j2Nxku/Go=
|
||||
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
|
||||
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
|
||||
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
|
||||
|
|
@ -326,8 +324,8 @@ github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs=
|
|||
github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/ncruces/go-sqlite3 v0.25.0 h1:trugKUs98Zwy9KwRr/EUxZHL92LYt7UqcKqAfpGpK+I=
|
||||
github.com/ncruces/go-sqlite3 v0.25.0/go.mod h1:n6Z7036yFilJx04yV0mi5JWaF66rUmXn1It9Ux8dx68=
|
||||
github.com/ncruces/go-sqlite3 v0.25.1 h1:nRK2mZ0jLNFJco8QFZ9+dCXxOGe6Re8bbG5o8gyalr8=
|
||||
github.com/ncruces/go-sqlite3 v0.25.1/go.mod h1:4BtkHRLbX5hE0PhBxJ11qETTwL7M4lk0ttru9nora1E=
|
||||
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
|
||||
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
||||
github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M=
|
||||
|
|
@ -487,8 +485,8 @@ github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FB
|
|||
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M=
|
||||
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
github.com/yuin/goldmark v1.7.10 h1:S+LrtBjRmqMac2UdtB6yyCEJm+UILZ2fefI4p7o0QpI=
|
||||
github.com/yuin/goldmark v1.7.10/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
|
||||
github.com/yuin/goldmark v1.7.11 h1:ZCxLyDMtz0nT2HFfsYG8WZ47Trip2+JyLysKcMYE5bo=
|
||||
github.com/yuin/goldmark v1.7.11/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
|
||||
gitlab.com/NyaaaWhatsUpDoc/sqlite v1.37.0-concurrency-workaround h1:QbfrBqNKgAFSSK89fYf547vxDQuz8p6iJUzzAMrusNk=
|
||||
gitlab.com/NyaaaWhatsUpDoc/sqlite v1.37.0-concurrency-workaround/go.mod h1:5YiWv+YviqGMuGw4V+PNplcyaJ5v+vQd7TQOgkACoJM=
|
||||
go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ=
|
||||
|
|
@ -501,16 +499,16 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0f
|
|||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0 h1:BEj3SPM81McUZHYjRS5pEgNgnmzGJ5tRpU5krWnV8Bs=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0/go.mod h1:9cKLGBDzI/F3NoHLQGm4ZrYdIHsvGt6ej6hUowxY0J4=
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.56.0 h1:GnCIi0QyG0yy2MrJLzVrIM7laaJstj//flf1zEJCG+E=
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.56.0/go.mod h1:JQcVZtbIIPM+7SWBB+T6FK+xunlyidwLp++fN0sUaOk=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk=
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.57.0 h1:AHh/lAP1BHrY5gBwk8ncc25FXWm/gmmY3BX258z5nuk=
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.57.0/go.mod h1:QpFWz1QxqevfjwzYdbMb4Y1NnlJvqSGwyuU0B4iuc9c=
|
||||
go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=
|
||||
go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
|
||||
go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY=
|
||||
go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
|
||||
go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
|
||||
go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
|
||||
go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4=
|
||||
|
|
@ -524,7 +522,6 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8
|
|||
golang.org/x/arch v0.16.0 h1:foMtLTdyOmIniqWCHjY6+JxuC54XP1fDwx4N0ASyW+U=
|
||||
golang.org/x/arch v0.16.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
||||
|
|
@ -535,8 +532,8 @@ golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
|
|||
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
|
||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
|
||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
|
||||
golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
|
||||
golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8=
|
||||
golang.org/x/image v0.26.0 h1:4XjIFEZWQmCZi6Wv8BoxsDhRU3RVnLX04dToTDAEPlY=
|
||||
golang.org/x/image v0.26.0/go.mod h1:lcxbMFAovzpnJxzXS3nyL83K27tmqtKzIJpctK8YO5c=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
|
|
@ -545,7 +542,6 @@ golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
|||
golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
|
||||
golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
|
|
@ -574,7 +570,6 @@ golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
|||
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
|
||||
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
|
|
|||
|
|
@ -23,12 +23,12 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtscontext"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/workers"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtscontext"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtserror"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/workers"
|
||||
)
|
||||
|
||||
func errActionConflict(action *gtsmodel.AdminAction) gtserror.WithCode {
|
||||
|
|
|
|||
|
|
@ -24,12 +24,12 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtserror"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/id"
|
||||
"code.superseriousbusiness.org/gotosocial/testrig"
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/id"
|
||||
"github.com/superseriousbusiness/gotosocial/testrig"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ import (
|
|||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtserror"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
|
||||
)
|
||||
|
||||
func (a *Actions) DomainKeysExpireF(domain string) ActionF {
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@ import (
|
|||
|
||||
"codeberg.org/gruf/go-kv"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/internal/ap"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/messages"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/ap"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/config"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtserror"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/log"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/messages"
|
||||
)
|
||||
|
||||
// Returns an AdminActionF for
|
||||
|
|
|
|||
|
|
@ -22,9 +22,9 @@ import (
|
|||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/db"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtserror"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
|
||||
)
|
||||
|
||||
// stubbifyInstance renders the given instance as a stub,
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue