mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 14:42:24 -05:00
[docs] add zh docs (#3507)
* [docs] add zh docs * [docs] add lang dropdown * [docs] update mkdocs zh config * [docs] migrate assets * [docs] update overrides dir in mkdocs zh config * [docs] exclude locales director in main mkdocs config * [docs] rename assets to public to avoid conflicting with template * [docs] extra_css change followup * [docs] add theme.palette.toggle.icon back into mkdocs zh config * [docs] fix zh readme reference + migrate language-specific repo markdown to docs * [docs] translate remaining repo docs + update reference * [docs] update zh index.md reference * [docs/zh] wording alignment
This commit is contained in:
parent
e953d80dff
commit
38a08cd25a
139 changed files with 20407 additions and 24 deletions
223
docs/locales/zh/admin/backup_and_restore.md
Normal file
223
docs/locales/zh/admin/backup_and_restore.md
Normal file
|
|
@ -0,0 +1,223 @@
|
|||
# 备份和恢复
|
||||
|
||||
由于 GoToSocial 数据库包含了实例以及所有用户的签名密钥,备份是至关重要的。如果这些密钥丢失,您将无法再从此域名进行联合与交流。请记住加密备份,以确保数据在静置时的安全。
|
||||
|
||||
除了灾难恢复之外,还有其他一些保持备份的好理由。您可以考虑以下几种可能的场景:
|
||||
|
||||
* 您想关闭实例,但可能会在以后重新创建,并且不希望破坏联合功能。
|
||||
* 出于某种原因,您需要迁移到不同的数据库(从 Postgres 到 SQLite 或反之亦然)。
|
||||
* 您准备对实例进行一些调整,希望快速备份以防出错导致数据丢失。
|
||||
|
||||
## 需要备份的内容
|
||||
|
||||
### 数据库
|
||||
|
||||
大多数备份工具都内置对常见的数据库的支持,如 PostgreSQL 和 SQLite。请确保首先查看他们的文档,因为它们通常会详细说明备份成功完成和恢复所需满足的某些注意事项和条件。
|
||||
|
||||
### 媒体文件
|
||||
|
||||
本站媒体文件应被备份。您可以使用 [GoToSocial CLI](cli.md#gotosocial-admin-media-list-local) 列出属于您的实例及其用户的所有媒体文件。
|
||||
|
||||
外站媒体无需备份。这可以有效地控制备份大小。外站媒体会从原始实例获取,就像因为媒体保留而被修剪掉后再次获取一样。
|
||||
|
||||
## 如何备份
|
||||
|
||||
您可以通过以下几种方式进行备份:
|
||||
|
||||
* 为实例和数据库运行所在的 VM/机器制作镜像
|
||||
* 使用 CLI 转储 GoToSocial 的状态
|
||||
* 备份数据库和媒体文件
|
||||
* 使用备份软件
|
||||
|
||||
尽管设置备份软件可能需要更多工作,但这无疑是最佳选择。它确保了一致和加密的备份,并可以抵御文件系统损坏,而磁盘快照和复制原始数据库及媒体文件无法做到这一点。
|
||||
|
||||
### 镜像您的磁盘
|
||||
|
||||
如果您在 VPS(云端的远程机器)上运行 GoToSocial,制作附加到 VPS 的磁盘镜像可能是保存所有数据库条目和媒体的最简单方法。这将保留整个磁盘。许多 VPS 提供商提供定时自动创建备份的选项,因此即使数据丢失,您也可以随时恢复。
|
||||
|
||||
优点:
|
||||
|
||||
* 相对容易操作。
|
||||
* 易于自动化(视具体的 VPS 而定)。
|
||||
* 保留完整的媒体和数据库条目。
|
||||
|
||||
缺点:
|
||||
|
||||
* 可能会根据您的 VPS 产生额外费用。
|
||||
* 可能也会保留您不需要的其他程序运行的数据。
|
||||
* 与供应商绑定,数据难以迁移。
|
||||
|
||||
### 使用 GoToSocial CLI
|
||||
|
||||
GoToSocial CLI 工具还提供了从实例备份和恢复数据的命令,这将保留所有必要的最少数据以备份和恢复您的实例,而不破坏与其他实例的联邦。
|
||||
|
||||
将**保留**的内容有:
|
||||
|
||||
* 所有本站账户条目,包括私钥和公钥。
|
||||
* 关注/被关注的外站账户,包括公钥。
|
||||
* 关注/关注请求。
|
||||
* 实例屏蔽列表。
|
||||
* 账户屏蔽列表。
|
||||
* 账户封禁列表。
|
||||
* 用户名和密码条目,电子邮件地址。
|
||||
|
||||
将**丢弃**的:
|
||||
|
||||
* 所有贴文。
|
||||
* 媒体。
|
||||
* 收藏。
|
||||
* 书签。
|
||||
* 置顶。
|
||||
* 应用程序。
|
||||
* 令牌。
|
||||
|
||||
生成的备份文件将是一个以行分隔的 JSON 对象序列(而不是 JSON 数组!)。例如:
|
||||
|
||||
```json
|
||||
{"type":"account","id":"01F8MH5NBDF2MV7CTC4Q5128HF","createdAt":"2021-08-31T12:00:53.985645Z","username":"1happyturtle","locked":true,"language":"en","uri":"http://localhost:8080/users/1happyturtle","url":"http://localhost:8080/@1happyturtle","inboxURI":"http://localhost:8080/users/1happyturtle/inbox","outboxURI":"http://localhost:8080/users/1happyturtle/outbox","followingUri":"http://localhost:8080/users/1happyturtle/following","followersUri":"http://localhost:8080/users/1happyturtle/followers","featuredCollectionUri":"http://localhost:8080/users/1happyturtle/collections/featured","actorType":"Person","privateKey":"-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAzLP7oyyR+BU9ejn0CN9K+WpX3L37pxUcCgZAGH5lf3cGPZjz\nausfsFME94OjVyzw3K5M2beDkZ4E+Fak46NLtakLB1yovy9jKtj4Y4txHoMvRJLz\neUPxdfeXtpx2d3FDj++Uq4DEE0BhbePXhTGJWaNdC9MQmWKghJnCS5mrnFkdpEFx\njUz9l0UHl2Z4wppxPdpt7FyevcdfKqzGsAA3BxTM0dg47ZJWjtcvfCiSYpAKFNJY\nfKhKn9T3ezZgrLsF+o0IpD23KxWe1X4d5lgJRU9T4FmLmbvyJKUnfgYXbSEvLUcq\n79WbhgRcWwxWubjmWXgPGwzULVhhpYlwd2Cv3wIDAQABAoIBAGF+MxHjD15VV2NY\nKKb1GjMx98i1Xx6TijgoA+zmfha4LGu35e79Lql+0LXFp0zEpa6lAQsMQQhgd0OD\nmKKmSk+pxAvskJ4FxrhIf/yBFA4RMrj5OCaAOocRtdsOJ8n5UtFBrNAF0tzMY9q/\nkgzoq97aVF1mV9iFxaeBx6zT8ozSdqBq1PK/3w1dVg89S5tfKYc7Q0lQ00SfsTnd\niTDClKyqurebo9Pt6M7gXavgg3tvBlmwwr6XHs34Leng3oiN9mW8DVzaBMPzn+rE\nxF2eqs3v9vVpj8es88OwCh5P+ff8vJYvhu7Fcr/bJ8BItBQwfb8QBDATg/MXU2BI\n2ssW6AECgYEA4wmIyYGeu9+hzDa/J3Vh8GnlVNUCohHcChQdOsWsFXUgpVlUIHrX\neKHn42vD4Rzy52/YzJts4NkZTM9sL+kEXIEcpMG/S9xIIud7U0m/hMSAlmnJK/9j\niEXws3o4jo0E77jnRcBdIjpG4K5Eekm0DSR3SFhtZfEdN2DWPvu7K98CgYEA5tER\n/qJwFMc51AobMU87ZjXON7hI2U1WY/pVF62jSl0IcSsnj2riEKWLrs+GRG+HUg+U\naFSqAHcxaVHA0h0AYR8RopAhDdVKh0kvB8biLo+IEzNjPv2vyn0yRN5YSfXdGzyJ\nUjVU6kWdQOwmzy86nHgFaqEx7eofHIaGZzJK/AECgYEAu2VNQHX63TuzQuoVUa5z\nzoq5vhGsALYZF0CO98ndRkDNV22qIL0ESQ/qZS64GYFZhWouWoQXlGfdmCbFN65v\n6SKwz9UT3rvN1vGWO6Ltr9q6AG0EnYpJT1vbV2kUcaU4Y94NFue2d9/+TMnKv91B\n/m8Q/efvNGuWH/WQIaCKV6UCgYBz89WhYMMDfS4M2mLcu5vwddk53qciGxrqMMjs\nkzsz0Va7W12NS7lzeWaZlAE0gf6t98urOdUJVNeKvBoss4sMP0phqxwf0eWV3ur0\ncjIQB+TpGGikLVdRVuGY/UXHKe9AjoHBva8B3aTpB3lbnbNJBXZbIc1uYq3sa5w7\nXWWUAQKBgH3yW73RRpQNcc9hTUssomUsnQQgHxpfWx5tNxqod36Ytd9EKBh3NqUZ\nvPcH6gdh7mcnNaVNTtQOHLHsbPfBK/pqvb3MAsdlokJcQz8MQJ9SGBBPY6PaGw8z\nq/ambaQykER6dwlXTIlU20uXY0bttOL/iYjKmgo3vA66qfzS6nsg\n-----END RSA PRIVATE KEY-----\n","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAzLP7oyyR+BU9ejn0CN9K+WpX3L37pxUcCgZAGH5lf3cGPZjzausf\nsFME94OjVyzw3K5M2beDkZ4E+Fak46NLtakLB1yovy9jKtj4Y4txHoMvRJLzeUPx\ndfeXtpx2d3FDj++Uq4DEE0BhbePXhTGJWaNdC9MQmWKghJnCS5mrnFkdpEFxjUz9\nl0UHl2Z4wppxPdpt7FyevcdfKqzGsAA3BxTM0dg47ZJWjtcvfCiSYpAKFNJYfKhK\nn9T3ezZgrLsF+o0IpD23KxWe1X4d5lgJRU9T4FmLmbvyJKUnfgYXbSEvLUcq79Wb\nhgRcWwxWubjmWXgPGwzULVhhpYlwd2Cv3wIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://localhost:8080/users/1happyturtle#main-key"}
|
||||
{"type":"account","id":"01F8MH0BBE4FHXPH513MBVFHB0","createdAt":"2021-09-08T10:00:53.985634Z","username":"weed_lord420","locked":true,"language":"en","uri":"http://localhost:8080/users/weed_lord420","url":"http://localhost:8080/@weed_lord420","inboxURI":"http://localhost:8080/users/weed_lord420/inbox","outboxURI":"http://localhost:8080/users/weed_lord420/outbox","followingUri":"http://localhost:8080/users/weed_lord420/following","followersUri":"http://localhost:8080/users/weed_lord420/followers","featuredCollectionUri":"http://localhost:8080/users/weed_lord420/collections/featured","actorType":"Person","privateKey":"-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAzsCcTHzwIgpWKVvut0Q/t1bFwnbj9hO6Ic6k0KXCXbf6qi0b\nMIyLRZr8DS61mD+SPSO2QKEL647xxyW2D8YGtwN6Cc6MpWETsWJkNtS8t7tDL//P\nceYpo5LiqKgn0TXj0Pq8Lvb7rqpH8QJ2EVm14SK+elhKZW/Bi5ZOEwfL8pw6EHI4\nus6VxCNQ099dksu++kbdD7zxqEKnk/4zOttYt0whlVrxzkibTjlKdlSlTYpIstU+\nfNyYVE0xWvrn+yF7jVlEwZYOFGfZbpELadrdOr2k1hvAk7upkrpKmLqYfwqD/xPc\nqwtx0iS6AEnmkSiTcAvju5vLkoLFRU7Of4AZ2wIDAQABAoIBAEAA4GHNS4k+Ke4j\nx4J0XkUjV5UbuPY0pSpSDjOJHOJmUfLcg85Ds9mYYO6zxwOaqmrC42ieclI5rh84\nTWQUqX9+VAk1J9UKeE4xZ1SSBtnZ3rK9PjrERZ+dmQ0dATaCuEO5Wwgu7Trk++Bg\nIqy8WNGZL94v9tfwALp1jTXW9AvmQoNdCFBP62vcmYW4YLjnggxLCFTA8YKfdePa\nTuxxY6uLkeBbxzWpbRU2+bmlxd5OnCkiRSMHIX+6JdtCu2JdWpUTCnWrFi2n1TZz\nZQx9z5rvowK1O785jGMFum5vBWpjIU8sJcXmPjGMU25zzmrhzfmkJsTXER3CXoUo\nSqSPqgECgYEA78OR7bY5KKQQ7Lyz6dru4Fct5P/OXTQoOg5aS7TKb95LVWj+TANn\n5djwIbLmAUV30z0Id9VgiZOL0Hny8+3VV9eU088Z408pAy5WQrL3dB8tZLUJSq5c\n5k6X15/VjWOOZKppDxShzoV3mcohrnwVwkv4fhPFQQOJJBYz6xurWs0CgYEA3MDE\nsDMd9ahzO0dl62ynojkkA8ZTcn2UdyvLpGj9UxT5j9vWF3CfqitXgcpNiVSIbxqQ\nbo/pBch7c/2Xakv5zkdcrJj5/6gyr+m1/tK2o7+CjDaSE4SYwufXx+qkl03Zpyzt\nKdOi7Hz/b2tdjump7ECEDE45mG2ea8oSnPgXl0cCgYBkGGFzu/9g2B24t47ksmHH\nhp3CXIjqoDurARLxSCi7SzJoFc0ULtfRPSAC8YzUOwwrQ++lF4+V3+MexcqHy2Kl\nqXqYcn18SC/3BAE/Fzf3Yoyw3mNiqihefbEmc7PTsxxfKkVx5ksmzNGBgsFM9sCe\nvNigyeAvpCo8xogmPwbqgQKBgE34mIBTzcUzFmBdu5YH7r3RyPK8XkUWLhZZlbgg\njTmHMw6o61mkIgENBf+F4RUckoQLsfAbTIcKZPB3JcAZzcYaVpVwAv1V/3E671lu\nO6xivE2iCL50GzDcis7GBhSbHsF5kNsxMV6uV9qW5ZjQ13/m2b0u9BDuxwHzgdeH\nmW2JAoGAIUOYniuEwdygxWVnYatpr3NPjT3BOKoV5i9zkeJRu1hFpwQM6vQ4Ds5p\nGC5vbMKAv9Cwuw62e2HvqTun3+U2Y5Uived3XCpgM/50BFrFHCfuqXEnu1bEzk5z\n9mIhp8uXPxzC5N7tRQfb3/eU1IUcb6T6ksbr2P81z0j03J55erg=\n-----END RSA PRIVATE KEY-----\n","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAzsCcTHzwIgpWKVvut0Q/t1bFwnbj9hO6Ic6k0KXCXbf6qi0bMIyL\nRZr8DS61mD+SPSO2QKEL647xxyW2D8YGtwN6Cc6MpWETsWJkNtS8t7tDL//PceYp\no5LiqKgn0TXj0Pq8Lvb7rqpH8QJ2EVm14SK+elhKZW/Bi5ZOEwfL8pw6EHI4us6V\nxCNQ099dksu++kbdD7zxqEKnk/4zOttYt0whlVrxzkibTjlKdlSlTYpIstU+fNyY\nVE0xWvrn+yF7jVlEwZYOFGfZbpELadrdOr2k1hvAk7upkrpKmLqYfwqD/xPcqwtx\n0iS6AEnmkSiTcAvju5vLkoLFRU7Of4AZ2wIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://localhost:8080/users/weed_lord420#main-key"}
|
||||
{"type":"account","id":"01F8MH17FWEB39HZJ76B6VXSKF","createdAt":"2021-09-05T10:00:53.985641Z","username":"admin","locked":true,"language":"en","uri":"http://localhost:8080/users/admin","url":"http://localhost:8080/@admin","inboxURI":"http://localhost:8080/users/admin/inbox","outboxURI":"http://localhost:8080/users/admin/outbox","followingUri":"http://localhost:8080/users/admin/following","followersUri":"http://localhost:8080/users/admin/followers","featuredCollectionUri":"http://localhost:8080/users/admin/collections/featured","actorType":"Person","privateKey":"-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAxr2e1pqfLwwUCwHUdx56Mxnq5Kzc2EBwqN6jIPjiqVaG5eVq\nhujDhdqwMq0hnpBSPzLnvjiOtEh7Bwhx0MjuC/GRPTM9oNWPYD4PcjX5ofrubyLR\nBI97qD0SbyzUWzeyBi6R5tpW8LK1MJXNbnYlz5WouEiC4mY77ulri0EN2hCq80wg\nfvtEjEvELcKBqIytKH3rutIzfAyqXD7LSQ8UDoNh9GHyIfq8Zj32gWVk2MiPI3+G\n8kQJDmD8CKEasnrGVdSJBQUg3xDAtOibPXLP+07AIsKYMon35hVNvQNQPS7ru/Bk\nRhhGp2R44zqj6L9mxYbSrhFAaKDedu8oVe1aLQIDAQABAoIBAGK0aIADOU4ffJDe\n7sveiih5Fc1PATwx/QIR2QkWM1SREdx6LYclcX44V8xDanAbE44p1SkHY/CsEtYy\nXnyoXnn2FwFDQrdveY7+I6PApOPLAcKWkyLltC+hbVdj92/6YGNrm7EA/a77wruH\nmwjiivLnTG2CLecNiXSl33DA9YU4Yz+2Tza3IpTdjt8c/dz/BKKaxaWV+i9ew5VR\nioo5v51B+J8PrneCM/p8LGiLV148Njr0JqV6eFy1JuzItYMYdc3Fp+YnMzsuMZEA\n1akMcoln/ucVJyOFnCn6jx47nIoPZLl1KxX3aRDRfvrejm6W4yAkkTmR5voSRqax\njPL3rI0CgYEA9Acu4TO8xJ3uGaUad0N9JTYQVSmtAaE/g+df9LGMSzoj8X95S4xE\nQsGPqNGDm2VWADJjK4P05twZ+LfsfSKQ86wbp4/gbgnXpqB1P5Lty/B7KxiTnNwt\nwb1WGWTCukxfUSL3PRyf8uylkrg72RxKiBx4zKO3WVSLWOZWrFtn0qMCgYEA0H2p\nJs9Nv20ADOOX5tQ7+ruS6/B/Fhyj5fhflSYCAtOW7aME7+zQKJyqSQZ4b2Aub3Tp\nGIaUbRIGzjHyuTultFFWvjU3H5aI/0g1G9WKaBhNkyTIYVmMKtYyhXNvouWing8x\noraWx8TTBP8Cdnnk+QgdR2fpug8cghKupp5wvO8CgYA1JFtRL7MsHjh73TimQExA\njkWARlMmx7bNQtXis8eZmk+5h8kiaqly4DQoz3eZn7fa0x5Fm7b5j3UYdPVLSvvG\nFPTwyKRXUk1kPA1MivK+NuCbwf5jao+MYW8emJLPf1JCmRq+dD1g6aglC3n9Dewt\nOAYWipCjI4Y1FfRKFJ3HgQKBgEAb47+DTyzln3ZXJYZdDHR06SCTuwBZnixAy2NZ\nZJTp6yb3UbVU5E0Yn2QFEVNuB9lN4b8g4tMHEACnazN6G+HugPXL9z9HUqjs0yfT\n6dNIZdIxJUyJ9IfXhYFzlYhJhE+F7IVUD9kttJV8tI0pvja1QAuM8Fm9+84jYIDr\nh08RAoGAMYbjKHbtejcHBwt1kIcSss0cDmlZbBleJo8tdmdg4ndf5GE9N4/EL7tq\nm2zYSfr7OVdnOwRhoO+xF/6d1L7+TR1wz+k2fuMsI71aM5Ocp1nYTutjIkBTcldZ\nZzvjOgZWng5icuRLQQiDSKG5uqazqL/xGXkijb4kp4WW6myWY3c=\n-----END RSA PRIVATE KEY-----\n","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAxr2e1pqfLwwUCwHUdx56Mxnq5Kzc2EBwqN6jIPjiqVaG5eVqhujD\nhdqwMq0hnpBSPzLnvjiOtEh7Bwhx0MjuC/GRPTM9oNWPYD4PcjX5ofrubyLRBI97\nqD0SbyzUWzeyBi6R5tpW8LK1MJXNbnYlz5WouEiC4mY77ulri0EN2hCq80wgfvtE\njEvELcKBqIytKH3rutIzfAyqXD7LSQ8UDoNh9GHyIfq8Zj32gWVk2MiPI3+G8kQJ\nDmD8CKEasnrGVdSJBQUg3xDAtOibPXLP+07AIsKYMon35hVNvQNQPS7ru/BkRhhG\np2R44zqj6L9mxYbSrhFAaKDedu8oVe1aLQIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://localhost:8080/users/admin#main-key"}
|
||||
{"type":"account","id":"01F8MH1H7YV1Z7D2C8K2730QBF","createdAt":"2021-09-06T10:00:53.985643Z","username":"the_mighty_zork","locked":true,"language":"en","uri":"http://localhost:8080/users/the_mighty_zork","url":"http://localhost:8080/@the_mighty_zork","inboxURI":"http://localhost:8080/users/the_mighty_zork/inbox","outboxURI":"http://localhost:8080/users/the_mighty_zork/outbox","followingUri":"http://localhost:8080/users/the_mighty_zork/following","followersUri":"http://localhost:8080/users/the_mighty_zork/followers","featuredCollectionUri":"http://localhost:8080/users/the_mighty_zork/collections/featured","actorType":"Person","privateKey":"-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEApBmF8U+or+E0mgUMH3LE4uRIWzeV9rhYnvSMm9OpOsxwJiss\n5mEA/NtPHvQlq2UwrqXX89Wvu94K9EzZ4VyWYQGdxaiPpt17vRqUfsHUnXkY0pvC\nC9zt/aNlJtdt2xm+7PTC0YQd4+E1FX3aaoUPJL8MXzNlpJzaUtuwLZe1iBmFfatZ\nFHptEgc4nlf6TNLTzj3Yw1/7zIGVS8Vi7VquHc0Xo8dRiL2RxCGzLWnwL6GlrxY1\ntMhsUg467XeoiwegFCpcIhAhPFREKoTnCEksL/N0rpXl7m6CAy5uqBGs5mMXnXlq\nefr58l0j2dU6zc60LCHH9TJC+roXsKJhy9sx/QIDAQABAoIBAFa+UypbFG1cW2Tr\nNBxPm7ngOEtXl8MicV4dIVKh0TwOo13ZxtNFBbOj7jALmPn/9HrtmbkABPQHDL1U\n/nt9aNSAeTjpwH3RaD5vFX3n0g8n2zJBOZLxxzAjNi4RBLYj5uP1AiKkdvRlsJza\nuSFDkty2zMBqN9mLPHE+RePj5Qa6tjYfIQqQzu/+YnYMlXHoC2yHNKsvz6S5FhVj\nv5zATv2JlJQH3RSmhuPOah73iQnKCLzYYEAHleawKrCg/rZ3ht37Guvabeq7MqQN\nvi9pJdAA+RMxPsboHajskePjOTYJgKQSxEAMRTMfBR40aZxklxQL0EoBd1Y3CHXh\nfMg0xWECgYEA0ORrpJ1A2WNQwKcDDeBBsaJqWF4EraoFzYrugKZrAYEeVyuGD0zq\nARUaWkZTZ1f6wQ10i1WxAuKlBEds7QsLdZzLsA4um4JlBroCZiYfPnmTtb8op1LY\nFqeYTByvAmnfWWTuOI67GX9ruLg8tEGuz38kuQVSxYs51its3tScNPUCgYEAyRst\nwRbqpOqnwoRoS6pxv0Vpc3nUcfaVYwsg/qobJkiwAdlUYeE7alvEY926VW4cvU/X\nhy3L1punAqnyLI7uuqCefXEbNxO0Cebyy4Kv2Ye1uzl0OHsJczSNdfpNqfAIKwtN\nHLCYDGCsluQhz+I/5Pd0dT+JDPPW9hKS2HG7o+kCgYBqugn1VRLo/sEnbS02TbnC\n1ESZWY/yWsgUOEObH2vUnO+vgeFAt/9nBi0sqnm6d0z6jbFZ7zI9UycUhJm2ksoM\nEUxQay6M7ZZIVYkcP6X++YbqePyAYOdey8oYOR+BkC45MkQ0SVh2so+LFTaOsnBq\nO3+7uGiN3ZBzSESbpO0acQKBgQCONrsXZeZO82XpB4tdns3LbgGRWKEkajTgEnml\nvZNvck2NMSwb/5PttbFe0ei4CyMluPV4MamJPQ9Qse+BFR67OWR63uZY/4T8z6X4\nxpUmZnLcUFfgrRlUr+AtgvEy8HxGPDquxC7x6deC6RcEFEIM3/UqCOEZGMJ1x1Ky\n31LLKQKBgGCKwVgQ8+4JyHZFkie3YdHhxJDokgY+Opb0HNnoBY/lZ54UMCCJQPS2\n0XPSu651j/3adr3RQneU04gF6U2/D5JzFEV0kUsqZ4Zy2EEU0LU4ibus0gyomSpK\niWhU4QrC/M4ELxYZinlNu3ThPWNQ/PMNteVWfdgOcV7uUWl0ViFp\n-----END RSA PRIVATE KEY-----\n","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEApBmF8U+or+E0mgUMH3LE4uRIWzeV9rhYnvSMm9OpOsxwJiss5mEA\n/NtPHvQlq2UwrqXX89Wvu94K9EzZ4VyWYQGdxaiPpt17vRqUfsHUnXkY0pvCC9zt\n/aNlJtdt2xm+7PTC0YQd4+E1FX3aaoUPJL8MXzNlpJzaUtuwLZe1iBmFfatZFHpt\nEgc4nlf6TNLTzj3Yw1/7zIGVS8Vi7VquHc0Xo8dRiL2RxCGzLWnwL6GlrxY1tMhs\nUg467XeoiwegFCpcIhAhPFREKoTnCEksL/N0rpXl7m6CAy5uqBGs5mMXnXlqefr5\n8l0j2dU6zc60LCHH9TJC+roXsKJhy9sx/QIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://localhost:8080/users/the_mighty_zork#main-key"}
|
||||
{"type":"block","id":"01FEXXET6XXMF7G2V3ASZP3YQW","createdAt":"2021-09-08T09:00:53.965362Z","uri":"http://localhost:8080/users/1happyturtle/blocks/01FEXXET6XXMF7G2V3ASZP3YQW","accountId":"01F8MH5NBDF2MV7CTC4Q5128HF","targetAccountId":"01F8MH5ZK5VRH73AKHQM6Y9VNX"}
|
||||
{"type":"account","id":"01F8MH5ZK5VRH73AKHQM6Y9VNX","createdAt":"2021-08-31T12:00:53.985646Z","username":"foss_satan","domain":"fossbros-anonymous.io","locked":true,"language":"en","uri":"http://fossbros-anonymous.io/users/foss_satan","url":"http://fossbros-anonymous.io/@foss_satan","inboxURI":"http://fossbros-anonymous.io/users/foss_satan/inbox","outboxURI":"http://fossbros-anonymous.io/users/foss_satan/outbox","followingUri":"http://fossbros-anonymous.io/users/foss_satan/following","followersUri":"http://fossbros-anonymous.io/users/foss_satan/followers","featuredCollectionUri":"http://fossbros-anonymous.io/users/foss_satan/collections/featured","actorType":"Person","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEA2OyVgkaIL9VohXKYTh319j4OouHRX/8QC7piXj71k7q5RDzEyvis\nVZBc5/C1/crCpxt895i0Ai2CiXQx+dISV7s/JBhAGl8s7TQ8jLlMuptrI0+sdkBC\nlu8pU0qQmoeXVnlquOzNmqGufUxIDtLXLZDN17qf/7vWA23q4d0tG5KQhGGGKiVM\n61Ufvr9MmgPBSpyUvYMAulFlz1264L49aGWeVgOz3qUQzqtxjrP0kaIbeyt56miP\nKr5AqkRgSsXci+FAo6suxR5gzo9NgleNkbZWF9MQyKlawukPwZUDSh396vtNQMee\n/4mto7mAXw8iio0IacrYO3F7iyewXnmI/QIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://fossbros-anonymous.io/users/foss_satan/main-key"}
|
||||
{"type":"follow","id":"01F8PYDCE8XE23GRE5DPZJDZDP","createdAt":"2021-09-08T09:00:54.749465Z","uri":"http://localhost:8080/users/the_mighty_zork/follow/01F8PYDCE8XE23GRE5DPZJDZDP","accountId":"01F8MH1H7YV1Z7D2C8K2730QBF","targetAccountId":"01F8MH5NBDF2MV7CTC4Q5128HF"}
|
||||
{"type":"follow","id":"01F8PY8RHWRQZV038T4E8T9YK8","createdAt":"2021-09-06T12:00:54.749459Z","uri":"http://localhost:8080/users/the_mighty_zork/follow/01F8PY8RHWRQZV038T4E8T9YK8","accountId":"01F8MH1H7YV1Z7D2C8K2730QBF","targetAccountId":"01F8MH17FWEB39HZJ76B6VXSKF"}
|
||||
{"type":"domainBlock","id":"01FF22EQM7X8E3RX1XGPN7S87D","createdAt":"2021-09-08T10:00:53.968971Z","domain":"replyguys.com","createdByAccountID":"01F8MH17FWEB39HZJ76B6VXSKF","privateComment":"i blocked this domain because they keep replying with pushy + unwarranted linux advice","publicComment":"reply-guying to tech posts","obfuscate":false}
|
||||
{"type":"user","id":"01F8MGYG9E893WRHW0TAEXR8GJ","createdAt":"2021-09-08T10:00:53.97247Z","accountID":"01F8MH0BBE4FHXPH513MBVFHB0","encryptedPassword":"$2y$10$ggWz5QWwnx6kzb9g0tnIJurFtE0dhr5Zfeaqs9iFuUIXzafQlJVZS","locale":"en","lastEmailedAt":"0001-01-01T00:00:00Z","confirmationToken":"a5a280bd-34be-44a3-8330-a57eaf61b8dd","confirmationTokenSentAt":"2021-09-08T10:00:53.972472Z","unconfirmedEmail":"weed_lord420@example.org","moderator":false,"admin":false,"disabled":false,"approved":false}
|
||||
{"type":"user","id":"01F8MGWYWKVKS3VS8DV1AMYPGE","createdAt":"2021-09-05T10:00:53.972475Z","email":"admin@example.org","accountID":"01F8MH17FWEB39HZJ76B6VXSKF","encryptedPassword":"$2y$10$ggWz5QWwnx6kzb9g0tnIJurFtE0dhr5Zfeaqs9iFuUIXzafQlJVZS","currentSignInAt":"2021-09-08T09:50:53.972477Z","lastSignInAt":"2021-09-08T08:00:53.972477Z","chosenLanguages":["en"],"locale":"en","lastEmailedAt":"2021-09-08T09:30:53.972478Z","confirmedAt":"2021-09-05T10:00:53.972478Z","moderator":true,"admin":true,"disabled":false,"approved":true}
|
||||
{"type":"user","id":"01F8MGVGPHQ2D3P3X0454H54Z5","createdAt":"2021-09-06T22:00:53.97248Z","email":"zork@example.org","accountID":"01F8MH1H7YV1Z7D2C8K2730QBF","encryptedPassword":"$2y$10$ggWz5QWwnx6kzb9g0tnIJurFtE0dhr5Zfeaqs9iFuUIXzafQlJVZS","currentSignInAt":"2021-09-08T09:30:53.972481Z","lastSignInAt":"2021-09-08T08:00:53.972481Z","chosenLanguages":["en"],"locale":"en","lastEmailedAt":"2021-09-08T09:05:53.972482Z","confirmationTokenSentAt":"2021-09-06T22:00:53.972483Z","confirmedAt":"2021-09-07T00:00:53.972482Z","moderator":false,"admin":false,"disabled":false,"approved":true}
|
||||
{"type":"user","id":"01F8MH1VYJAE00TVVGMM5JNJ8X","createdAt":"2021-09-06T22:00:53.972485Z","email":"tortle.dude@example.org","accountID":"01F8MH5NBDF2MV7CTC4Q5128HF","encryptedPassword":"$2y$10$ggWz5QWwnx6kzb9g0tnIJurFtE0dhr5Zfeaqs9iFuUIXzafQlJVZS","currentSignInAt":"2021-09-08T09:30:53.972485Z","lastSignInAt":"2021-09-08T08:00:53.972486Z","chosenLanguages":["en"],"locale":"en","lastEmailedAt":"2021-09-08T09:05:53.972487Z","confirmationTokenSentAt":"2021-09-06T22:00:53.972487Z","confirmedAt":"2021-09-07T00:00:53.972487Z","moderator":false,"admin":false,"disabled":false,"approved":true}
|
||||
{"type":"instance","id":"01BZDDRPAB8J645ABY31HHF68Y","createdAt":"2021-09-08T10:00:54.763912Z","domain":"localhost:8080","title":"localhost:8080","uri":"http://localhost:8080","reputation":0}
|
||||
```
|
||||
|
||||
有关如何使用命令导入/导出的信息,参见[此处](cli.md#gotosocial-admin-export)。尽管 `export` 命令不会备份媒体,但可以使用 [`media list-local`](cli.md#gotosocial-admin-media-list-local) 命令来确定应该保留哪些媒体文件。
|
||||
|
||||
优势:
|
||||
|
||||
* 数据库无关:导出的数据采用了一种通用格式,可以使用 `import` 命令将这些数据插入 Postgres 或 SQLite 数据库中。
|
||||
* 轻量级:仅保留必要的内容,因此备份文件可以非常小(甚至小到可以通过电子邮件发送)。备份/导入命令只需几秒钟即可运行。
|
||||
* 易读格式:输出是 JSON 格式。
|
||||
|
||||
劣势:
|
||||
|
||||
* 贴文/收藏等的丢失:除非你愿意丢失某些内容,否则不要这样进行备份/恢复。
|
||||
* 需要使用 GoToSocial CLI 工具将数据插回数据库,除非你为此编写自定义工具。
|
||||
|
||||
### 备份你的数据库文件和媒体
|
||||
|
||||
无论你是使用 PostgreSQL 还是 SQLite 作为 GoToSocial 数据库,都可以直接使用类似 [rclone](https://rclone.org/) 的工具来备份数据库文件,或者遵循 [Postgres 数据备份的最佳实践](https://www.postgresql.org/docs/15/backup.html) 或 [SQLite 数据备份的最佳实践](https://sqlite.org/backup.html)。
|
||||
|
||||
使用 GoToSocial CLI 的媒体 [`list-attachments`](cli.md#gotosocial-admin-media-list-attachments) 和 [`list-emojis`](cli.md#gotosocial-admin-media-list-emojis) 命令来获取需要保护的媒体文件列表。
|
||||
|
||||
优势:
|
||||
|
||||
* 备份相对便携 - 可以将数据从一台机器迁移到另一台。
|
||||
* 有大量文档和工具可供参考。
|
||||
* 可以根据需要有多种备份方式。
|
||||
|
||||
劣势:
|
||||
|
||||
* 初次设置可能有点复杂。
|
||||
* 需要确定备份的存放位置。
|
||||
* 从备份中恢复可能比较麻烦。
|
||||
* 除非同时备份媒体,否则数据库中的媒体附件引用将会中断。
|
||||
|
||||
### 备份软件
|
||||
|
||||
备份软件专为帮助你创建、管理和恢复备份而设计。它通常知道如何安全地备份数据库,因此你不用成为 PostgreSQL 或 SQLite 备份专家。它也可以从文件系统中进行备份。
|
||||
|
||||
尽管与直接备份数据库文件的方法大致具有相同的优点和缺点,这种方法还有一些额外的好处:
|
||||
|
||||
* 备份高度便携,可以从零开始恢复数据库。
|
||||
* 备份按照常规计划进行,并有可配置的保留策略。
|
||||
* 备份是增量和压缩的,以节省存储和带宽。
|
||||
* 备份是加密的。
|
||||
* 内置工具可以列出快照并从中恢复。
|
||||
|
||||
!!! tip
|
||||
[Rsync.net](https://rsync.net/)、[BorgBase](https://www.borgbase.com/) 和 [Hetzner Storage](https://www.hetzner.com/storage/storage-box) 提供了可用于备份的经济实惠的存储。Rsync.net 有一种专门为 Borg 设计的备份产品,比他们的常规存储产品便宜得多。如果你只想使用 Borg 管理的备份,请在[此处注册](https://www.rsync.net/products/borg.html)。
|
||||
|
||||
#### Borgmatic
|
||||
|
||||
[Borgmatic](https://torsion.org/borgmatic/) 是一个帮助使用 [Borg](https://www.borgbackup.org/) 进行备份的工具。它通过使用 YAML 的声明性配置文件驱动。BorgBase、Rsync.net 和 Hetzner 都支持 Borg。
|
||||
|
||||
!!! warning
|
||||
初始化 Borg 仓库时,确保使用强加密密钥进行设置,并将密钥安全地存放在某处。否则将无法在将来解密备份。ArchWiki 上关于 Borgmatic 的条目解释了如何安全地将你的加密密钥传递给 Borgmatic,而不在配置文件中以明文形式存储它。
|
||||
|
||||
如何使用 Borgmatic 备份数据库有其[单独的文档页面](https://torsion.org/borgmatic/docs/how-to/backup-your-databases/),你应当在备份前查看一下。对于使用 SQLite 的 GoToSocial,Borgmatic 的简单 `config.yaml` 如下:
|
||||
|
||||
|
||||
```yaml
|
||||
location:
|
||||
repositories:
|
||||
- path: ssh://<在你的提供商控制面板中查找ssh地址>
|
||||
label: <可以是任意内容,但通常是提供商名称,例如 borgbase>
|
||||
patterns_from:
|
||||
- /etc/borgmatic/gotosocial_patterns
|
||||
|
||||
storage:
|
||||
compression: auto,zstd
|
||||
archive_name_format: '{hostname}-{now:%Y-%m-%d-%H%M%S}'
|
||||
retries: 5
|
||||
retry_wait: 30
|
||||
|
||||
retention:
|
||||
keep_daily: 7
|
||||
keep_weekly: 6
|
||||
keep_monthly: 12
|
||||
|
||||
hooks:
|
||||
before_backup:
|
||||
- /usr/bin/systemctl stop gotosocial
|
||||
after_backup:
|
||||
- /usr/bin/systemctl start gotosocial
|
||||
sqlite_databases:
|
||||
- name: gotosocial
|
||||
path: /path/to/sqlite.db
|
||||
```
|
||||
|
||||
对于 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)。
|
||||
|
||||
您需要将该文件放在您的 GoToSocial 实例上,并确保该文件是可执行的。它需要 Python 3,安装 Borg 和 Borgmatic 后您应该已经具备。它仅依赖于 Python 标准库。
|
||||
|
||||
!!! note
|
||||
为了确保可靠运行,您应确保 GoToSocial 配置中的 [storage-local-base-path](../configuration/storage.md) 使用的是绝对路径。否则您将需要自己调整路径。
|
||||
|
||||
```sh
|
||||
$ gotosocial admin media list-attachments --local-only | \
|
||||
/path/to/media-to-borg-patterns.py \
|
||||
<storage-local-base-path>
|
||||
```
|
||||
|
||||
这将在控制台上输出一个类似于以下内容的模式集:
|
||||
|
||||
```
|
||||
R <storage-local-base-path>
|
||||
+ pp:<storage-local-base-path>/<account ID>
|
||||
- <storage-local-base-path>/*
|
||||
```
|
||||
|
||||
!!! tip
|
||||
你可以通过向 `media-to-borg-patterns.py` 传递 `--help` 来查看帮助。通过将文件位置作为脚本的最后一个参数,也可以将输出直接写入文件。
|
||||
|
||||
给定这组模式,Borg 将从 `<storage-local-base-path>` 开始寻找文件。任何匹配路径前缀 `pp:` 的都会被包括进去。其他的则会匹配最后一个模式,从存档中排除。
|
||||
|
||||
在单用户实例中,你可以运行此命令一次,并直接在 Borgmatic 配置中内联模式 [使用 `patterns` 键](https://torsion.org/borgmatic/docs/reference/configuration/)。在多用户实例中,你应该在用户注册后运行此命令。或者,每次备份前都可以运行它。
|
||||
|
||||
如果你将 Borgmatic 作为 systemd 服务运行,可以为 `borgmatic.service` [创建一个 drop-in](https://wiki.archlinux.org/title/systemd#Drop-in_files),在备份开始前运行模式生成:
|
||||
|
||||
|
||||
```ini
|
||||
[Service]
|
||||
ExecStartPre=/path/to/gotosocial admin media list-attachments --local-only | /path/to/media-to-borg-patterns.py <storage-local-base-path> /etc/borgmatic/gotosocial_patterns
|
||||
```
|
||||
|
||||
建议查看的文档:
|
||||
|
||||
* Borgmatic [配置参考](https://torsion.org/borgmatic/docs/reference/configuration/)
|
||||
* ArchWiki 关于 [Borgmatic 的条目](https://wiki.archlinux.org/title/Borgmatic)
|
||||
* ArchWiki 关于 [Borg 的条目](https://wiki.archlinux.org/title/Borg_backup)
|
||||
* BorgBase [文档](https://docs.borgbase.com/)
|
||||
* Hetzner 社区指南关于 [设置 Borgmatic](https://community.hetzner.com/tutorials/install-and-configure-borgmatic)
|
||||
465
docs/locales/zh/admin/cli.md
Normal file
465
docs/locales/zh/admin/cli.md
Normal file
|
|
@ -0,0 +1,465 @@
|
|||
# GtS CLI 工具
|
||||
|
||||
GoToSocial 编译为二进制可执行文件。
|
||||
|
||||
使用此二进制文件的标准方法是通过运行 `gotosocial server start` 命令启动服务器。
|
||||
|
||||
不过,此二进制文件也可以作为管理工具和调试工具使用。
|
||||
|
||||
以下是 `gotosocial --help` 的完整输出,不包括全局配置选项的大列表。
|
||||
|
||||
```text
|
||||
GoToSocial - 一个联邦制社交媒体服务器
|
||||
|
||||
帮助文档参见:https://docs.gotosocial.org。
|
||||
|
||||
代码仓库:https://github.com/superseriousbusiness/gotosocial
|
||||
|
||||
用法:
|
||||
gotosocial [command]
|
||||
|
||||
可用命令:
|
||||
admin gotosocial 管理相关任务
|
||||
debug gotosocial 调试相关任务
|
||||
help 获取任何命令的帮助
|
||||
server gotosocial 服务器相关任务
|
||||
```
|
||||
|
||||
在 `可用命令` 下,可以看到标准的 `server` 命令。但是也有处理管理和调试的命令,这些将在本文档中进行解释。
|
||||
|
||||
!!! Info "将全局配置传递给 CLI"
|
||||
|
||||
对于所有这些命令,你仍然需要正确设置全局选项,以便 CLI 工具知道如何连接到你的数据库,以及使用哪个数据库、哪个主机和账户域等。
|
||||
|
||||
你可以使用环境变量设置这些选项,通过 CLI 标志传递它们(例如,`gotosocial [commands] --host example.org`),或者只需将 CLI 工具指向你的配置文件(例如,`gotosocial --config-path ./config.yaml [commands]`)。
|
||||
|
||||
!!! Info
|
||||
|
||||
运行 CLI 命令时,你将会看到如下输出:
|
||||
|
||||
```text
|
||||
time=XXXX level=info msg=connected to SQLITE database
|
||||
time=XXXX level=info msg=there are no new migrations to run func=doMigration
|
||||
time=XXXX level=info msg=closing db connection
|
||||
```
|
||||
|
||||
这是正常的,表示命令已按预期运行。
|
||||
|
||||
!!! Warning "运行管理命令后重启 GtS"
|
||||
|
||||
由于 GoToSocial 的内部缓存机制,你可能需要在运行某些命令后重启 GoToSocial,以使命令的效果“生效”。我们仍在寻找一种无需重启的方法。在此期间,需要在运行命令后重启的命令将在下文中突出显示。
|
||||
|
||||
## gotosocial admin
|
||||
|
||||
包含 `account`、`export`、`import` 和 `media` 子命令。
|
||||
|
||||
### gotosocial admin account create
|
||||
|
||||
此命令可用于在你的实例上创建新账户。
|
||||
|
||||
`gotosocial admin account create --help`:
|
||||
|
||||
```text
|
||||
创建一个新的本站账户
|
||||
|
||||
用法:
|
||||
gotosocial admin account create [flags]
|
||||
|
||||
标志:
|
||||
--email string 该账户的电子邮件地址
|
||||
-h, --help 获取创建命令的帮助
|
||||
--password string 为该账户设置的密码
|
||||
--username string 要创建/删除等的用户名
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
gotosocial admin account create \
|
||||
--username some_username \
|
||||
--email someuser@example.org \
|
||||
--password 'somelongandcomplicatedpassword' \
|
||||
--config-path config.yaml
|
||||
```
|
||||
|
||||
### gotosocial admin account confirm
|
||||
|
||||
此命令可用于确认你的实例上的用户+账户,允许他们登录并使用账户。
|
||||
|
||||
!!! Info
|
||||
|
||||
如果账户是使用 `admin account create` 创建的,则不必在账户上运行 `confirm`,它将已被确认。
|
||||
|
||||
`gotosocial admin account confirm --help`:
|
||||
|
||||
```text
|
||||
手动确认现有本站账户,从而跳过电子邮件确认
|
||||
|
||||
用法:
|
||||
gotosocial admin account confirm [flags]
|
||||
|
||||
标志:
|
||||
-h, --help 获取确认命令的帮助
|
||||
--username string 要创建/删除等的用户名
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
gotosocial admin account confirm --username some_username --config-path config.yaml
|
||||
```
|
||||
|
||||
### gotosocial admin account promote
|
||||
|
||||
此命令可用于将用户提升为管理员。
|
||||
|
||||
!!! Warning "需要重启服务器"
|
||||
|
||||
为使更改生效,此命令需要在运行命令后重启 GoToSocial。
|
||||
|
||||
`gotosocial admin account promote --help`:
|
||||
|
||||
```text
|
||||
将本站账户提升为管理员
|
||||
|
||||
用法:
|
||||
gotosocial admin account promote [flags]
|
||||
|
||||
标志:
|
||||
-h, --help 获取提升命令的帮助
|
||||
--username string 要创建/删除等的用户名
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
gotosocial admin account promote --username some_username --config-path config.yaml
|
||||
```
|
||||
|
||||
### gotosocial admin account demote
|
||||
|
||||
此命令可用于将用户从管理员降级为普通用户。
|
||||
|
||||
!!! Warning "需要重启服务器"
|
||||
|
||||
为使更改生效,此命令需要在运行命令后重启 GoToSocial。
|
||||
|
||||
`gotosocial admin account demote --help`:
|
||||
|
||||
```text
|
||||
将本站账户从管理员降级为普通用户
|
||||
|
||||
用法:
|
||||
gotosocial admin account demote [flags]
|
||||
|
||||
标志:
|
||||
-h, --help 获取降级命令的帮助
|
||||
--username string 要创建/删除等的用户名
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
gotosocial admin account demote --username some_username --config-path config.yaml
|
||||
```
|
||||
|
||||
### gotosocial admin account disable
|
||||
|
||||
此命令可用于在你的实例上禁用一个账户:禁止其登录或执行任何操作,但不删除数据。
|
||||
|
||||
!!! Warning "需要重启服务器"
|
||||
|
||||
为使更改生效,此命令需要在运行命令后重启 GoToSocial。
|
||||
|
||||
`gotosocial admin account disable --help`:
|
||||
|
||||
```text
|
||||
将本站账户的 `disabled` 设置为 true,以防止其登录或发布等,但不删除任何内容
|
||||
|
||||
用法:
|
||||
gotosocial admin account disable [flags]
|
||||
|
||||
标志:
|
||||
-h, --help 获取禁用命令的帮助
|
||||
--username string 要创建/删除等的用户名
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
gotosocial admin account disable --username some_username --config-path config.yaml
|
||||
```
|
||||
|
||||
### gotosocial admin account enable
|
||||
|
||||
此命令可用于重新启用你实例上的账户,撤销之前的 `disable` 命令。
|
||||
|
||||
!!! Warning "需要重启服务器"
|
||||
|
||||
为使更改生效,此命令需要在运行命令后重启 GoToSocial。
|
||||
|
||||
`gotosocial admin account enable --help`:
|
||||
|
||||
```text
|
||||
通过将本站账户的 `disabled` 设置为 false,撤销之前的禁用命令
|
||||
|
||||
用法:
|
||||
gotosocial admin account enable [flags]
|
||||
|
||||
标志:
|
||||
-h, --help 获取启用命令的帮助
|
||||
--username string 要创建/删除等的用户名
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
gotosocial admin account enable --username some_username --config-path config.yaml
|
||||
```
|
||||
|
||||
### gotosocial admin account password
|
||||
|
||||
此命令可用于为指定的本站账户设置新密码。
|
||||
|
||||
!!! Warning "需要重启服务器"
|
||||
|
||||
为使更改生效,此命令需要在运行命令后重启 GoToSocial。
|
||||
|
||||
`gotosocial admin account password --help`:
|
||||
|
||||
```text
|
||||
为指定的本站账户设置新密码
|
||||
|
||||
用法:
|
||||
gotosocial admin account password [flags]
|
||||
|
||||
标志:
|
||||
-h, --help 获取密码命令的帮助
|
||||
--password string 为该账户设置的密码
|
||||
--username string 要创建/删除等的用户名
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
gotosocial admin account password --username some_username --password some_really_good_password --config-path config.yaml
|
||||
```
|
||||
|
||||
### gotosocial admin export
|
||||
|
||||
此命令可用于将你的 GoToSocial 实例中的数据导出到文件,以便备份/存储。
|
||||
|
||||
文件格式将是一系列以换行符分隔的 JSON 对象。
|
||||
|
||||
`gotosocial admin export --help`:
|
||||
|
||||
```text
|
||||
将数据从数据库导出到指定路径的文件
|
||||
|
||||
用法:
|
||||
gotosocial admin export [flags]
|
||||
|
||||
标志:
|
||||
-h, --help 获取导出命令的帮助
|
||||
--path string 导入/导出文件的路径
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
gotosocial admin export --path example.json --config-path config.yaml
|
||||
```
|
||||
|
||||
`example.json`:
|
||||
|
||||
```json
|
||||
{"type":"account","id":"01F8MH5NBDF2MV7CTC4Q5128HF","createdAt":"2021-08-31T12:00:53.985645Z","username":"1happyturtle","locked":true,"language":"en","uri":"http://localhost:8080/users/1happyturtle","url":"http://localhost:8080/@1happyturtle","inboxURI":"http://localhost:8080/users/1happyturtle/inbox","outboxURI":"http://localhost:8080/users/1happyturtle/outbox","followingUri":"http://localhost:8080/users/1happyturtle/following","followersUri":"http://localhost:8080/users/1happyturtle/followers","featuredCollectionUri":"http://localhost:8080/users/1happyturtle/collections/featured","actorType":"Person","privateKey":"-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAzLP7oyyR+BU9ejn0CN9K+WpX3L37pxUcCgZAGH5lf3cGPZjz\nausfsFME94OjVyzw3K5M2beDkZ4E+Fak46NLtakLB1yovy9jKtj4Y4txHoMvRJLz\neUPxdfeXtpx2d3FDj++Uq4DEE0BhbePXhTGJWaNdC9MQmWKghJnCS5mrnFkdpEFx\njUz9l0UHl2Z4wppxPdpt7FyevcdfKqzGsAA3BxTM0dg47ZJWjtcvfCiSYpAKFNJY\nfKhKn9T3ezZgrLsF+o0IpD23KxWe1X4d5lgJRU9T4FmLmbvyJKUnfgYXbSEvLUcq\n79WbhgRcWwxWubjmWXgPGwzULVhhpYlwd2Cv3wIDAQABAoIBAGF+MxHjD15VV2NY\nKKb1GjMx98i1Xx6TijgoA+zmfha4LGu35e79Lql+0LXFp0zEpa6lAQsMQQhgd0OD\nmKKmSk+pxAvskJ4FxrhIf/yBFA4RMrj5OCaAOocRtdsOJ8n5UtFBrNAF0tzMY9q/\nkgzoq97aVF1mV9iFxaeBx6zT8ozSdqBq1PK/3w1dVg89S5tfKYc7Q0lQ00SfsTnd\niTDClKyqurebo9Pt6M7gXavgg3tvBlmwwr6XHs34Leng3oiN9mW8DVzaBMPzn+rE\nxF2eqs3v9vVpj8es88OwCh5P+ff8vJYvhu7Fcr/bJ8BItBQwfb8QBDATg/MXU2BI\n2ssW6AECgYEA4wmIyYGeu9+hzDa/J3Vh8GnlVNUCohHcChQdOsWsFXUgpVlUIHrX\neKHn42vD4Rzy52/YzJts4NkZTM9sL+kEXIEcpMG/S9xIIud7U0m/hMSAlmnJK/9j\niEXws3o4jo0E77jnRcBdIjpG4K5Eekm0DSR3SFhtZfEdN2DWPvu7K98CgYEA5tER\n/qJwFMc51AobMU87ZjXON7hI2U1WY/pVF62jSl0IcSsnj2riEKWLrs+GRG+HUg+U\naFSqAHcxaVHA0h0AYR8RopAhDdVKh0kvB8biLo+IEzNjPv2vyn0yRN5YSfXdGzyJ\nUjVU6kWdQOwmzy86nHgFaqEx7eofHIaGZzJK/AECgYEAu2VNQHX63TuzQuoVUa5z\nzoq5vhGsALYZF0CO98ndRkDNV22qIL0ESQ/qZS64GYFZhWouWoQXlGfdmCbFN65v\n6SKwz9UT3rvN1vGWO6Ltr9q6AG0EnYpJT1vbV2kUcaU4Y94NFue2d9/+TMnKv91B\n/m8Q/efvNGuWH/WQIaCKV6UCgYBz89WhYMMDfS4M2mLcu5vwddk53qciGxrqMMjs\nkzsz0Va7W12NS7lzeWaZlAE0gf6t98urOdUJVNeKvBoss4sMP0phqxwf0eWV3ur0\ncjIQB+TpGGikLVdRVuGY/UXHKe9AjoHBva8B3aTpB3lbnbNJBXZbIc1uYq3sa5w7\nXWWUAQKBgH3yW73RRpQNcc9hTUssomUsnQQgHxpfWx5tNxqod36Ytd9EKBh3NqUZ\nvPcH6gdh7mcnNaVNTtQOHLHsbPfBK/pqvb3MAsdlokJcQz8MQJ9SGBBPY6PaGw8z\nq/ambaQykER6dwlXTIlU20uXY0bttOL/iYjKmgo3vA66qfzS6nsg\n-----END RSA PRIVATE KEY-----\n","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAzLP7oyyR+BU9ejn0CN9K+WpX3L37pxUcCgZAGH5lf3cGPZjzausf\nsFME94OjVyzw3K5M2beDkZ4E+Fak46NLtakLB1yovy9jKtj4Y4txHoMvRJLzeUPx\ndfeXtpx2d3FDj++Uq4DEE0BhbePXhTGJWaNdC9MQmWKghJnCS5mrnFkdpEFxjUz9\nl0UHl2Z4wppxPdpt7FyevcdfKqzGsAA3BxTM0dg47ZJWjtcvfCiSYpAKFNJYfKhK\nn9T3ezZgrLsF+o0IpD23KxWe1X4d5lgJRU9T4FmLmbvyJKUnfgYXbSEvLUcq79Wb\nhgRcWwxWubjmWXgPGwzULVhhpYlwd2Cv3wIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://localhost:8080/users/1happyturtle#main-key"}
|
||||
{"type":"account","id":"01F8MH0BBE4FHXPH513MBVFHB0","createdAt":"2021-09-08T10:00:53.985634Z","username":"weed_lord420","locked":true,"language":"en","uri":"http://localhost:8080/users/weed_lord420","url":"http://localhost:8080/@weed_lord420","inboxURI":"http://localhost:8080/users/weed_lord420/inbox","outboxURI":"http://localhost:8080/users/weed_lord420/outbox","followingUri":"http://localhost:8080/users/weed_lord420/following","followersUri":"http://localhost:8080/users/weed_lord420/followers","featuredCollectionUri":"http://localhost:8080/users/weed_lord420/collections/featured","actorType":"Person","privateKey":"-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAzsCcTHzwIgpWKVvut0Q/t1bFwnbj9hO6Ic6k0KXCXbf6qi0b\nMIyLRZr8DS61mD+SPSO2QKEL647xxyW2D8YGtwN6Cc6MpWETsWJkNtS8t7tDL//P\nceYpo5LiqKgn0TXj0Pq8Lvb7rqpH8QJ2EVm14SK+elhKZW/Bi5ZOEwfL8pw6EHI4\nus6VxCNQ099dksu++kbdD7zxqEKnk/4zOttYt0whlVrxzkibTjlKdlSlTYpIstU+\nfNyYVE0xWvrn+yF7jVlEwZYOFGfZbpELadrdOr2k1hvAk7upkrpKmLqYfwqD/xPc\nqwtx0iS6AEnmkSiTcAvju5vLkoLFRU7Of4AZ2wIDAQABAoIBAEAA4GHNS4k+Ke4j\nx4J0XkUjV5UbuPY0pSpSDjOJHOJmUfLcg85Ds9mYYO6zxwOaqmrC42ieclI5rh84\nTWQUqX9+VAk1J9UKeE4xZ1SSBtnZ3rK9PjrERZ+dmQ0dATaCuEO5Wwgu7Trk++Bg\nIqy8WNGZL94v9tfwALp1jTXW9AvmQoNdCFBP62vcmYW4YLjnggxLCFTA8YKfdePa\nTuxxY6uLkeBbxzWpbRU2+bmlxd5OnCkiRSMHIX+6JdtCu2JdWpUTCnWrFi2n1TZz\nZQx9z5rvowK1O785jGMFum5vBWpjIU8sJcXmPjGMU25zzmrhzfmkJsTXER3CXoUo\nSqSPqgECgYEA78OR7bY5KKQQ7Lyz6dru4Fct5P/OXTQoOg5aS7TKb95LVWj+TANn\n5djwIbLmAUV30z0Id9VgiZOL0Hny8+3VV9eU088Z408pAy5WQrL3dB8tZLUJSq5c\n5k6X15/VjWOOZKppDxShzoV3mcohrnwVwkv4fhPFQQOJJBYz6xurWs0CgYEA3MDE\nsDMd9ahzO0dl62ynojkkA8ZTcn2UdyvLpGj9UxT5j9vWF3CfqitXgcpNiVSIbxqQ\nbo/pBch7c/2Xakv5zkdcrJj5/6gyr+m1/tK2o7+CjDaSE4SYwufXx+qkl03Zpyzt\nKdOi7Hz/b2tdjump7ECEDE45mG2ea8oSnPgXl0cCgYBkGGFzu/9g2B24t47ksmHH\nhp3CXIjqoDurARLxSCi7SzJoFc0ULtfRPSAC8YzUOwwrQ++lF4+V3+MexcqHy2Kl\nqXqYcn18SC/3BAE/Fzf3Yoyw3mNiqihefbEmc7PTsxxfKkVx5ksmzNGBgsFM9sCe\nvNigyeAvpCo8xogmPwbqgQKBgE34mIBTzcUzFmBdu5YH7r3RyPK8XkUWLhZZlbgg\njTmHMw6o61mkIgENBf+F4RUckoQLsfAbTIcKZPB3JcAZzcYaVpVwAv1V/3E671lu\nO6xivE2iCL50GzDcis7GBhSbHsF5kNsxMV6uV9qW5ZjQ13/m2b0u9BDuxwHzgdeH\nmW2JAoGAIUOYniuEwdygxWVnYatpr3NPjT3BOKoV5i9zkeJRu1hFpwQM6vQ4Ds5p\nGC5vbMKAv9Cwuw62e2HvqTun3+U2Y5Uived3XCpgM/50BFrFHCfuqXEnu1bEzk5z\n9mIhp8uXPxzC5N7tRQfb3/eU1IUcb6T6ksbr2P81z0j03J55erg=\n-----END RSA PRIVATE KEY-----\n","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAzsCcTHzwIgpWKVvut0Q/t1bFwnbj9hO6Ic6k0KXCXbf6qi0bMIyL\nRZr8DS61mD+SPSO2QKEL647xxyW2D8YGtwN6Cc6MpWETsWJkNtS8t7tDL//PceYp\no5LiqKgn0TXj0Pq8Lvb7rqpH8QJ2EVm14SK+elhKZW/Bi5ZOEwfL8pw6EHI4us6V\nxCNQ099dksu++kbdD7zxqEKnk/4zOttYt0whlVrxzkibTjlKdlSlTYpIstU+fNyY\nVE0xWvrn+yF7jVlEwZYOFGfZbpELadrdOr2k1hvAk7upkrpKmLqYfwqD/xPcqwtx\n0iS6AEnmkSiTcAvju5vLkoLFRU7Of4AZ2wIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://localhost:8080/users/weed_lord420#main-key"}
|
||||
{"type":"account","id":"01F8MH17FWEB39HZJ76B6VXSKF","createdAt":"2021-09-05T10:00:53.985641Z","username":"admin","locked":true,"language":"en","uri":"http://localhost:8080/users/admin","url":"http://localhost:8080/@admin","inboxURI":"http://localhost:8080/users/admin/inbox","outboxURI":"http://localhost:8080/users/admin/outbox","followingUri":"http://localhost:8080/users/admin/following","followersUri":"http://localhost:8080/users/admin/followers","featuredCollectionUri":"http://localhost:8080/users/admin/collections/featured","actorType":"Person","privateKey":"-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAxr2e1pqfLwwUCwHUdx56Mxnq5Kzc2EBwqN6jIPjiqVaG5eVq\nhujDhdqwMq0hnpBSPzLnvjiOtEh7Bwhx0MjuC/GRPTM9oNWPYD4PcjX5ofrubyLR\nBI97qD0SbyzUWzeyBi6R5tpW8LK1MJXNbnYlz5WouEiC4mY77ulri0EN2hCq80wg\nfvtEjEvELcKBqIytKH3rutIzfAyqXD7LSQ8UDoNh9GHyIfq8Zj32gWVk2MiPI3+G\n8kQJDmD8CKEasnrGVdSJBQUg3xDAtOibPXLP+07AIsKYMon35hVNvQNQPS7ru/Bk\nRhhGp2R44zqj6L9mxYbSrhFAaKDedu8oVe1aLQIDAQABAoIBAGK0aIADOU4ffJDe\n7sveiih5Fc1PATwx/QIR2QkWM1SREdx6LYclcX44V8xDanAbE44p1SkHY/CsEtYy\nXnyoXnn2FwFDQrdveY7+I6PApOPLAcKWkyLltC+hbVdj92/6YGNrm7EA/a77wruH\nmwjiivLnTG2CLecNiXSl33DA9YU4Yz+2Tza3IpTdjt8c/dz/BKKaxaWV+i9ew5VR\nioo5v51B+J8PrneCM/p8LGiLV148Njr0JqV6eFy1JuzItYMYdc3Fp+YnMzsuMZEA\n1akMcoln/ucVJyOFnCn6jx47nIoPZLl1KxX3aRDRfvrejm6W4yAkkTmR5voSRqax\njPL3rI0CgYEA9Acu4TO8xJ3uGaUad0N9JTYQVSmtAaE/g+df9LGMSzoj8X95S4xE\nQsGPqNGDm2VWADJjK4P05twZ+LfsfSKQ86wbp4/gbgnXpqB1P5Lty/B7KxiTnNwt\nwb1WGWTCukxfUSL3PRyf8uylkrg72RxKiBx4zKO3WVSLWOZWrFtn0qMCgYEA0H2p\nJs9Nv20ADOOX5tQ7+ruS6/B/Fhyj5fhflSYCAtOW7aME7+zQKJyqSQZ4b2Aub3Tp\nGIaUbRIGzjHyuTultFFWvjU3H5aI/0g1G9WKaBhNkyTIYVmMKtYyhXNvouWing8x\noraWx8TTBP8Cdnnk+QgdR2fpug8cghKupp5wvO8CgYA1JFtRL7MsHjh73TimQExA\njkWARlMmx7bNQtXis8eZmk+5h8kiaqly4DQoz3eZn7fa0x5Fm7b5j3UYdPVLSvvG\nFPTwyKRXUk1kPA1MivK+NuCbwf5jao+MYW8emJLPf1JCmRq+dD1g6aglC3n9Dewt\nOAYWipCjI4Y1FfRKFJ3HgQKBgEAb47+DTyzln3ZXJYZdDHR06SCTuwBZnixAy2NZ\nZJTp6yb3UbVU5E0Yn2QFEVNuB9lN4b8g4tMHEACnazN6G+HugPXL9z9HUqjs0yfT\n6dNIZdIxJUyJ9IfXhYFzlYhJhE+F7IVUD9kttJV8tI0pvja1QAuM8Fm9+84jYIDr\nh08RAoGAMYbjKHbtejcHBwt1kIcSss0cDmlZbBleJo8tdmdg4ndf5GE9N4/EL7tq\nm2zYSfr7OVdnOwRhoO+xF/6d1L7+TR1wz+k2fuMsI71aM5Ocp1nYTutjIkBTcldZ\nZzvjOgZWng5icuRLQQiDSKG5uqazqL/xGXkijb4kp4WW6myWY3c=\n-----END RSA PRIVATE KEY-----\n","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAxr2e1pqfLwwUCwHUdx56Mxnq5Kzc2EBwqN6jIPjiqVaG5eVqhujD\nhdqwMq0hnpBSPzLnvjiOtEh7Bwhx0MjuC/GRPTM9oNWPYD4PcjX5ofrubyLRBI97\nqD0SbyzUWzeyBi6R5tpW8LK1MJXNbnYlz5WouEiC4mY77ulri0EN2hCq80wgfvtE\njEvELcKBqIytKH3rutIzfAyqXD7LSQ8UDoNh9GHyIfq8Zj32gWVk2MiPI3+G8kQJ\nDmD8CKEasnrGVdSJBQUg3xDAtOibPXLP+07AIsKYMon35hVNvQNQPS7ru/BkRhhG\np2R44zqj6L9mxYbSrhFAaKDedu8oVe1aLQIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://localhost:8080/users/admin#main-key"}
|
||||
{"type":"account","id":"01F8MH1H7YV1Z7D2C8K2730QBF","createdAt":"2021-09-06T10:00:53.985643Z","username":"the_mighty_zork","locked":true,"language":"en","uri":"http://localhost:8080/users/the_mighty_zork","url":"http://localhost:8080/@the_mighty_zork","inboxURI":"http://localhost:8080/users/the_mighty_zork/inbox","outboxURI":"http://localhost:8080/users/the_mighty_zork/outbox","followingUri":"http://localhost:8080/users/the_mighty_zork/following","followersUri":"http://localhost:8080/users/the_mighty_zork/followers","featuredCollectionUri":"http://localhost:8080/users/the_mighty_zork/collections/featured","actorType":"Person","privateKey":"-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEApBmF8U+or+E0mgUMH3LE4uRIWzeV9rhYnvSMm9OpOsxwJiss\n5mEA/NtPHvQlq2UwrqXX89Wvu94K9EzZ4VyWYQGdxaiPpt17vRqUfsHUnXkY0pvC\nC9zt/aNlJtdt2xm+7PTC0YQd4+E1FX3aaoUPJL8MXzNlpJzaUtuwLZe1iBmFfatZ\nFHptEgc4nlf6TNLTzj3Yw1/7zIGVS8Vi7VquHc0Xo8dRiL2RxCGzLWnwL6GlrxY1\ntMhsUg467XeoiwegFCpcIhAhPFREKoTnCEksL/N0rpXl7m6CAy5uqBGs5mMXnXlq\nefr58l0j2dU6zc60LCHH9TJC+roXsKJhy9sx/QIDAQABAoIBAFa+UypbFG1cW2Tr\nNBxPm7ngOEtXl8MicV4dIVKh0TwOo13ZxtNFBbOj7jALmPn/9HrtmbkABPQHDL1U\n/nt9aNSAeTjpwH3RaD5vFX3n0g8n2zJBOZLxxzAjNi4RBLYj5uP1AiKkdvRlsJza\nuSFDkty2zMBqN9mLPHE+RePj5Qa6tjYfIQqQzu/+YnYMlXHoC2yHNKsvz6S5FhVj\nv5zATv2JlJQH3RSmhuPOah73iQnKCLzYYEAHleawKrCg/rZ3ht37Guvabeq7MqQN\nvi9pJdAA+RMxPsboHajskePjOTYJgKQSxEAMRTMfBR40aZxklxQL0EoBd1Y3CHXh\nfMg0xWECgYEA0ORrpJ1A2WNQwKcDDeBBsaJqWF4EraoFzYrugKZrAYEeVyuGD0zq\nARUaWkZTZ1f6wQ10i1WxAuKlBEds7QsLdZzLsA4um4JlBroCZiYfPnmTtb8op1LY\nFqeYTByvAmnfWWTuOI67GX9ruLg8tEGuz38kuQVSxYs51its3tScNPUCgYEAyRst\nwRbqpOqnwoRoS6pxv0Vpc3nUcfaVYwsg/qobJkiwAdlUYeE7alvEY926VW4cvU/X\nhy3L1punAqnyLI7uuqCefXEbNxO0Cebyy4Kv2Ye1uzl0OHsJczSNdfpNqfAIKwtN\nHLCYDGCsluQhz+I/5Pd0dT+JDPPW9hKS2HG7o+kCgYBqugn1VRLo/sEnbS02TbnC\n1ESZWY/yWsgUOEObH2vUnO+vgeFAt/9nBi0sqnm6d0z6jbFZ7zI9UycUhJm2ksoM\nEUxQay6M7ZZIVYkcP6X++YbqePyAYOdey8oYOR+BkC45MkQ0SVh2so+LFTaOsnBq\nO3+7uGiN3ZBzSESbpO0acQKBgQCONrsXZeZO82XpB4tdns3LbgGRWKEkajTgEnml\nvZNvck2NMSwb/5PttbFe0ei4CyMluPV4MamJPQ9Qse+BFR67OWR63uZY/4T8z6X4\nxpUmZnLcUFfgrRlUr+AtgvEy8HxGPDquxC7x6deC6RcEFEIM3/UqCOEZGMJ1x1Ky\n31LLKQKBgGCKwVgQ8+4JyHZFkie3YdHhxJDokgY+Opb0HNnoBY/lZ54UMCCJQPS2\n0XPSu651j/3adr3RQneU04gF6U2/D5JzFEV0kUsqZ4Zy2EEU0LU4ibus0gyomSpK\niWhU4QrC/M4ELxYZinlNu3ThPWNQ/PMNteVWfdgOcV7uUWl0ViFp\n-----END RSA PRIVATE KEY-----\n","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEApBmF8U+or+E0mgUMH3LE4uRIWzeV9rhYnvSMm9OpOsxwJiss5mEA\n/NtPHvQlq2UwrqXX89Wvu94K9EzZ4VyWYQGdxaiPpt17vRqUfsHUnXkY0pvCC9zt\n/aNlJtdt2xm+7PTC0YQd4+E1FX3aaoUPJL8MXzNlpJzaUtuwLZe1iBmFfatZFHpt\nEgc4nlf6TNLTzj3Yw1/7zIGVS8Vi7VquHc0Xo8dRiL2RxCGzLWnwL6GlrxY1tMhs\nUg467XeoiwegFCpcIhAhPFREKoTnCEksL/N0rpXl7m6CAy5uqBGs5mMXnXlqefr5\n8l0j2dU6zc60LCHH9TJC+roXsKJhy9sx/QIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://localhost:8080/users/the_mighty_zork#main-key"}
|
||||
{"type":"block","id":"01FEXXET6XXMF7G2V3ASZP3YQW","createdAt":"2021-09-08T09:00:53.965362Z","uri":"http://localhost:8080/users/1happyturtle/blocks/01FEXXET6XXMF7G2V3ASZP3YQW","accountId":"01F8MH5NBDF2MV7CTC4Q5128HF","targetAccountId":"01F8MH5ZK5VRH73AKHQM6Y9VNX"}
|
||||
{"type":"account","id":"01F8MH5ZK5VRH73AKHQM6Y9VNX","createdAt":"2021-08-31T12:00:53.985646Z","username":"foss_satan","domain":"fossbros-anonymous.io","locked":true,"language":"en","uri":"http://fossbros-anonymous.io/users/foss_satan","url":"http://fossbros-anonymous.io/@foss_satan","inboxURI":"http://fossbros-anonymous.io/users/foss_satan/inbox","outboxURI":"http://fossbros-anonymous.io/users/foss_satan/outbox","followingUri":"http://fossbros-anonymous.io/users/foss_satan/following","followersUri":"http://fossbros-anonymous.io/users/foss_satan/followers","featuredCollectionUri":"http://fossbros-anonymous.io/users/foss_satan/collections/featured","actorType":"Person","publicKey":"-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEA2OyVgkaIL9VohXKYTh319j4OouHRX/8QC7piXj71k7q5RDzEyvis\nVZBc5/C1/crCpxt895i0Ai2CiXQx+dISV7s/JBhAGl8s7TQ8jLlMuptrI0+sdkBC\nlu8pU0qQmoeXVnlquOzNmqGufUxIDtLXLZDN17qf/7vWA23q4d0tG5KQhGGGKiVM\n61Ufvr9MmgPBSpyUvYMAulFlz1264L49aGWeVgOz3qUQzqtxjrP0kaIbeyt56miP\nKr5AqkRgSsXci+FAo6suxR5gzo9NgleNkbZWF9MQyKlawukPwZUDSh396vtNQMee\n/4mto7mAXw8iio0IacrYO3F7iyewXnmI/QIDAQAB\n-----END RSA PUBLIC KEY-----\n","publicKeyUri":"http://fossbros-anonymous.io/users/foss_satan/main-key"}
|
||||
{"type":"follow","id":"01F8PYDCE8XE23GRE5DPZJDZDP","createdAt":"2021-09-08T09:00:54.749465Z","uri":"http://localhost:8080/users/the_mighty_zork/follow/01F8PYDCE8XE23GRE5DPZJDZDP","accountId":"01F8MH1H7YV1Z7D2C8K2730QBF","targetAccountId":"01F8MH5NBDF2MV7CTC4Q5128HF"}
|
||||
{"type":"follow","id":"01F8PY8RHWRQZV038T4E8T9YK8","createdAt":"2021-09-06T12:00:54.749459Z","uri":"http://localhost:8080/users/the_mighty_zork/follow/01F8PY8RHWRQZV038T4E8T9YK8","accountId":"01F8MH1H7YV1Z7D2C8K2730QBF","targetAccountId":"01F8MH17FWEB39HZJ76B6VXSKF"}
|
||||
{"type":"domainBlock","id":"01FF22EQM7X8E3RX1XGPN7S87D","createdAt":"2021-09-08T10:00:53.968971Z","domain":"replyguys.com","createdByAccountID":"01F8MH17FWEB39HZJ76B6VXSKF","privateComment":"i blocked this domain because they keep replying with pushy + unwarranted linux advice","publicComment":"reply-guying to tech posts","obfuscate":false}
|
||||
{"type":"user","id":"01F8MGYG9E893WRHW0TAEXR8GJ","createdAt":"2021-09-08T10:00:53.97247Z","accountID":"01F8MH0BBE4FHXPH513MBVFHB0","encryptedPassword":"$2y$10$ggWz5QWwnx6kzb9g0tnIJurFtE0dhr5Zfeaqs9iFuUIXzafQlJVZS","locale":"en","lastEmailedAt":"0001-01-01T00:00:00Z","confirmationToken":"a5a280bd-34be-44a3-8330-a57eaf61b8dd","confirmationTokenSentAt":"2021-09-08T10:00:53.972472Z","unconfirmedEmail":"weed_lord420@example.org","moderator":false,"admin":false,"disabled":false,"approved":false}
|
||||
{"type":"user","id":"01F8MGWYWKVKS3VS8DV1AMYPGE","createdAt":"2021-09-05T10:00:53.972475Z","email":"admin@example.org","accountID":"01F8MH17FWEB39HZJ76B6VXSKF","encryptedPassword":"$2y$10$ggWz5QWwnx6kzb9g0tnIJurFtE0dhr5Zfeaqs9iFuUIXzafQlJVZS","currentSignInAt":"2021-09-08T09:50:53.972477Z","lastSignInAt":"2021-09-08T08:00:53.972477Z","chosenLanguages":["en"],"locale":"en","lastEmailedAt":"2021-09-08T09:30:53.972478Z","confirmedAt":"2021-09-05T10:00:53.972478Z","moderator":true,"admin":true,"disabled":false,"approved":true}
|
||||
{"type":"user","id":"01F8MGVGPHQ2D3P3X0454H54Z5","createdAt":"2021-09-06T22:00:53.97248Z","email":"zork@example.org","accountID":"01F8MH1H7YV1Z7D2C8K2730QBF","encryptedPassword":"$2y$10$ggWz5QWwnx6kzb9g0tnIJurFtE0dhr5Zfeaqs9iFuUIXzafQlJVZS","currentSignInAt":"2021-09-08T09:30:53.972481Z","lastSignInAt":"2021-09-08T08:00:53.972481Z","chosenLanguages":["en"],"locale":"en","lastEmailedAt":"2021-09-08T09:05:53.972482Z","confirmationTokenSentAt":"2021-09-06T22:00:53.972483Z","confirmedAt":"2021-09-07T00:00:53.972482Z","moderator":false,"admin":false,"disabled":false,"approved":true}
|
||||
{"type":"user","id":"01F8MH1VYJAE00TVVGMM5JNJ8X","createdAt":"2021-09-06T22:00:53.972485Z","email":"tortle.dude@example.org","accountID":"01F8MH5NBDF2MV7CTC4Q5128HF","encryptedPassword":"$2y$10$ggWz5QWwnx6kzb9g0tnIJurFtE0dhr5Zfeaqs9iFuUIXzafQlJVZS","currentSignInAt":"2021-09-08T09:30:53.972485Z","lastSignInAt":"2021-09-08T08:00:53.972486Z","chosenLanguages":["en"],"locale":"en","lastEmailedAt":"2021-09-08T09:05:53.972487Z","confirmationTokenSentAt":"2021-09-06T22:00:53.972487Z","confirmedAt":"2021-09-07T00:00:53.972487Z","moderator":false,"admin":false,"disabled":false,"approved":true}
|
||||
{"type":"instance","id":"01BZDDRPAB8J645ABY31HHF68Y","createdAt":"2021-09-08T10:00:54.763912Z","domain":"localhost:8080","title":"localhost:8080","uri":"http://localhost:8080","reputation":0}
|
||||
```
|
||||
|
||||
### gotosocial admin import
|
||||
|
||||
此命令可用于将文件中的数据导入到你的 GoToSocial 数据库中。
|
||||
|
||||
如果数据库中尚未存在 GoToSocial 表,它们将被创建。
|
||||
|
||||
如果在导入过程中出现任何冲突(例如尝试导入特定帐户时已经存在),则进程将中止。
|
||||
|
||||
文件格式应为一系列以换行符分隔的 JSON 对象(参见上文)。
|
||||
|
||||
`gotosocial admin import --help`:
|
||||
|
||||
```text
|
||||
从文件中导入数据到数据库
|
||||
|
||||
用法:
|
||||
gotosocial admin import [选项]
|
||||
|
||||
选项:
|
||||
-h, --help 导入命令的帮助信息
|
||||
--path string 要导入/导出文件的路径
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
gotosocial admin import --path example.json --config-path config.yaml
|
||||
```
|
||||
|
||||
### gotosocial admin media list-attachments
|
||||
|
||||
可用于列出实例上的本站、外站或所有媒体附件的存储路径(包括头像和头图)。
|
||||
|
||||
`local-only` 和 `remote-only` 可用作过滤器;它们不能同时被设置。
|
||||
|
||||
如果既未设置 `local-only` 也未设置 `remote-only`,则将列出实例上的所有媒体附件。
|
||||
|
||||
你可能希望在运行此命令时将 `GTS_LOG_LEVEL` 设置为 `warn` 或 `error`,否则会记录大量你可能不需要的信息日志。
|
||||
|
||||
`gotosocial admin media list-attachments --help`:
|
||||
|
||||
```text
|
||||
列出本站、外站或所有附件
|
||||
|
||||
用法:
|
||||
gotosocial admin media list-attachments [选项]
|
||||
|
||||
选项:
|
||||
-h, --help list-attachments 命令的帮助信息
|
||||
--local-only 仅列出本站附件/表情;如果指定,则 remote-only 不能为 true
|
||||
--remote-only 仅列出外站附件/表情;如果指定,则 local-only 不能为 true
|
||||
```
|
||||
|
||||
示例输出:
|
||||
|
||||
```text
|
||||
/gotosocial/062G5WYKY35KKD12EMSM3F8PJ8/attachment/original/01PFPMWK2FF0D9WMHEJHR07C3R.jpg
|
||||
/gotosocial/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg
|
||||
/gotosocial/01F8MH5ZK5VRH73AKHQM6Y9VNX/attachment/original/01FVW7RXPQ8YJHTEXYPE7Q8ZY0.jpg
|
||||
/gotosocial/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/original/01F8MH8RMYQ6MSNY3JM2XT1CQ5.jpg
|
||||
/gotosocial/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/original/01F8MH7TDVANYKWVE8VVKFPJTJ.gif
|
||||
/gotosocial/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg
|
||||
/gotosocial/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/original/01F8MH58A357CV5K7R7TJMSH6S.jpg
|
||||
/gotosocial/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/original/01CDR64G398ADCHXK08WWTHEZ5.gif
|
||||
```
|
||||
|
||||
### gotosocial admin media list-emojis
|
||||
|
||||
用于列出您实例上的本站、外站或所有表情符号的存储路径。
|
||||
|
||||
`local-only` 和 `remote-only` 可用作过滤器;它们不能同时设置。
|
||||
|
||||
如果未设置 `local-only` 或 `remote-only`,将列出您实例上的所有表情符号。
|
||||
|
||||
您可能需要在运行时将 `GTS_LOG_LEVEL` 设置为 `warn` 或 `error`,否则将记录许多您可能不需要的信息消息。
|
||||
|
||||
`gotosocial admin media list-emojis --help`:
|
||||
|
||||
```text
|
||||
列出本站、外站或所有表情符号
|
||||
|
||||
用法:
|
||||
gotosocial admin media list-emojis [标志]
|
||||
|
||||
标志:
|
||||
-h, --help 获取 list-emojis 帮助信息
|
||||
--local-only 仅列出本站附件/表情符号;如果指定,则 remote-only 不能为真
|
||||
--remote-only 仅列出外站附件/表情符号;如果指定,则 local-only 不能为真
|
||||
```
|
||||
|
||||
示例输出:
|
||||
|
||||
```text
|
||||
/gotosocial/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01GD5KP5CQEE1R3X43Y1EHS2CW.png
|
||||
/gotosocial/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png
|
||||
```
|
||||
|
||||
### gotosocial admin media prune orphaned
|
||||
|
||||
此命令可用于删除您 GoToSocial 中的孤立媒体。
|
||||
|
||||
孤立媒体定义为存储中使用 GoToSocial 格式的键存在,但没有相应数据库条目的媒体。这对于删除可能在以前安装中遗留的文件,或错误放置在存储中的文件非常有用。
|
||||
|
||||
!!! warning "需要停止服务器"
|
||||
|
||||
此命令仅在 GoToSocial 未运行时起作用,因为它需要获取存储的独占锁。
|
||||
|
||||
在运行此命令之前,请先停止 GoToSocial!
|
||||
|
||||
```text
|
||||
删除存储中的孤立媒体
|
||||
|
||||
用法:
|
||||
gotosocial admin media prune orphaned [标志]
|
||||
|
||||
标志:
|
||||
--dry-run 执行试运行,仅记录可删除项目的数量(默认值为 true)
|
||||
-h, --help 获取 orphaned 帮助信息
|
||||
```
|
||||
|
||||
默认情况下,此命令执行试运行,将记录可以删除的项目数量。要真正执行删除,请在命令中添加 `--dry-run=false`。
|
||||
|
||||
示例(试运行):
|
||||
|
||||
```bash
|
||||
gotosocial admin media prune orphaned
|
||||
```
|
||||
|
||||
示例(实际执行):
|
||||
|
||||
```bash
|
||||
gotosocial admin media prune orphaned --dry-run=false
|
||||
```
|
||||
|
||||
### gotosocial admin media prune remote
|
||||
|
||||
此命令可用于删除您 GoToSocial 中未使用/过时的外站媒体。
|
||||
|
||||
过时媒体是指外站实例中早于 `media-remote-cache-days` 的头像/头图/状态附件。
|
||||
|
||||
如果需要,这些项目将会在之后按需重新获取。
|
||||
|
||||
未使用媒体是指当前账号或状态未使用的头像/头图/状态附件。
|
||||
|
||||
!!! warning "需要停止服务器"
|
||||
|
||||
此命令仅在 GoToSocial 未运行时起作用,因为它需要获取存储的独占锁。
|
||||
|
||||
在运行此命令之前,请先停止 GoToSocial!
|
||||
|
||||
```text
|
||||
从存储中删除未使用/过时的外站媒体,时间早于指定天数
|
||||
|
||||
用法:
|
||||
gotosocial admin media prune remote [标志]
|
||||
|
||||
标志:
|
||||
--dry-run 执行试运行,仅记录可删除项目的数量(默认值为 true)
|
||||
-h, --help 获取 remote 帮助信息
|
||||
```
|
||||
|
||||
默认情况下,此命令执行试运行,将记录可以删除的项目数量。要真正执行删除,请在命令中添加 `--dry-run=false`。
|
||||
|
||||
示例(试运行):
|
||||
|
||||
```bash
|
||||
gotosocial admin media prune remote
|
||||
```
|
||||
|
||||
示例(实际执行):
|
||||
|
||||
```bash
|
||||
gotosocial admin media prune remote --dry-run=false
|
||||
```
|
||||
55
docs/locales/zh/admin/database_maintenance.md
Normal file
55
docs/locales/zh/admin/database_maintenance.md
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# 数据库维护
|
||||
|
||||
无论你选择使用 SQLite 还是 Postgres 来运行 GoToSocial,可能都需要偶尔执行一些维护工作,以保持数据库的良好运作。
|
||||
|
||||
!!! tip
|
||||
|
||||
尽管此处提供的维护建议旨在不破坏现有数据,你还是应该在手动执行维护操作之前备份数据库。这样,如果输入错误或意外运行了不当命令,可以恢复备份并重试。
|
||||
|
||||
!!! danger
|
||||
|
||||
**强烈不建议**手动创建、删除或更新 GoToSocial 数据库中的条目,这里不会提供相关命令。即使你认为自己知道在做什么,运行 `DELETE` 等语句可能会引入非常难以排查的问题。以下维护建议旨在帮助你的实例平稳运行;如果你手动进入数据库并对条目、表和索引进行修改,它们不会拯救你的数据。
|
||||
|
||||
## SQLite
|
||||
|
||||
要进行手动 SQLite 维护,你首先应该在存储 GoToSocial sqlite.db 文件的机器上安装 SQLite 命令行工具 `sqlite3`。有关 `sqlite3` 的详细信息,请参见[此处](https://sqlite.org/cli.html)。
|
||||
|
||||
### 分析/优化
|
||||
|
||||
按照 [SQLite 最佳实践](https://sqlite.org/lang_analyze.html#recommended_usage_pattern),GoToSocial 在关闭数据库连接时运行 `optimize` SQLite pragma,`analysis_limit=1000`,以保持索引信息的更新。
|
||||
|
||||
在每次数据库迁移后(例如,启动新版本的 GoToSocial 时),GoToSocial 将运行 `ANALYZE`,以确保查询计划器正确考虑迁移新增或删除的索引。
|
||||
|
||||
`ANALYZE` 命令可能需要大约 10 分钟,具体时间取决于硬件和数据库文件的大小。
|
||||
|
||||
由于上述自动化步骤,正常情况下你不需要针对 SQLite 数据库文件手动运行 `ANALYZE` 命令。
|
||||
|
||||
然而,如果你中断了之前的 `ANALYZE` 命令,并发现查询运行缓慢,可能是因为 SQLite 内部表中存储的索引元数据已被删除或不当修改。
|
||||
|
||||
如果是这种情况,可以尝试手动运行完整的 `ANALYZE` 命令,步骤如下:
|
||||
|
||||
1. 停止 GoToSocial。
|
||||
2. 在 `sqlite3` shell 中连接到你的 GoToSocial 数据库文件,运行 `PRAGMA analysis_limit=0; ANALYZE;`(这可能需要几分钟)。
|
||||
3. 启动 GoToSocial。
|
||||
|
||||
[查看更多信息](https://sqlite.org/lang_analyze.html#approximate_analyze_for_large_databases).
|
||||
|
||||
### 清理(Vacuum)
|
||||
|
||||
GoToSocial 当前未启用 SQLite 的自动清理(auto-vacuum)。要将数据库文件重新打包到最佳大小,你可能需要定期(例如每几个月)在 SQLite 数据库上运行 `VACUUM` 命令。
|
||||
|
||||
可以在[此处](https://sqlite.org/lang_vacuum.html)查看有关 `VACUUM` 命令的详细信息。
|
||||
|
||||
基本步骤如下:
|
||||
|
||||
1. 停止 GoToSocial。
|
||||
2. 在 `sqlite3` shell 中连接到你的 GoToSocial 数据库文件,运行 `VACUUM;`(这可能需要几分钟)。
|
||||
3. 启动 GoToSocial。
|
||||
|
||||
### 副本
|
||||
|
||||
为数据库设置副本等保护措施是常见做法。SQLite 可以使用外部软件进行副本创建。基本步骤描述在 [配置 SQLite 副本](../advanced/replicating-sqlite.md) 页面。
|
||||
|
||||
## Postgres
|
||||
|
||||
待完成:Postgres 的维护建议。
|
||||
73
docs/locales/zh/admin/domain_blocks.md
Normal file
73
docs/locales/zh/admin/domain_blocks.md
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
# 域名屏蔽
|
||||
|
||||
GoToSocial 支持屏蔽/封禁那些你不想与你的实例联合的域名。在我们的文档中,“屏蔽”和“封禁”这两个术语在涉及域名时可以互换使用,因为它们的意思相同:屏蔽你的实例与目标域名上的实例相互通信,有效地切断两个实例之间的联合。
|
||||
|
||||
你可以使用[实例管理面板](./settings.md#联合)查看、创建和移除域名屏蔽和域名允许。
|
||||
|
||||
本文档重点说明域名屏蔽实际*作用*是什么,以及创建新域名屏蔽时会产生哪些副作用。
|
||||
|
||||
## 域名屏蔽如何工作
|
||||
|
||||
域名屏蔽通过两种方式工作:
|
||||
|
||||
首先,它指示你的实例拒绝来自目标域名的任何请求:
|
||||
|
||||
- 从被屏蔽域名到你的实例的所有传入请求将以 HTTP 状态码 `403 Forbidden` 响应。
|
||||
- 这使目标域名上的帐户无法与你实例上的帐户或该帐户创建的任何贴文进行互动,因为你的实例会简单地拒绝处理请求。
|
||||
- 这也延伸到 GET 请求:你的实例将不再对被屏蔽实例的请求提供 ActivityPub 响应,例如获取帐户简介或置顶贴文等。
|
||||
- 你的实例上的帐户的贴文转发也不应对被屏蔽的实例可见,因为那些实例将无法获取已转发贴文的内容。
|
||||
|
||||
其次,域名屏蔽指示你的实例不再向目标实例发出任何请求。这意味着:
|
||||
|
||||
- 你的实例不会向被屏蔽域名上的实例发送任何消息。
|
||||
- 也不会从该实例获取贴文、帐户、媒体或表情符号。
|
||||
|
||||
## 安全顾虑
|
||||
|
||||
### 屏蔽规避
|
||||
|
||||
域名屏蔽并不完全严密。GoToSocial *可以* 确保自身既不响应来自被屏蔽域名的请求,也不向这些实例发出请求。不幸的是,它*无法*保证你的实例上的帐户不会以任何方式对被屏蔽实例的用户可见。请考虑以下情况,这些都代表了一种[屏蔽规避](https://en.wikipedia.org/wiki/Block_(Internet)#Evasion):
|
||||
|
||||
- 你屏蔽了 `blocked.instance.org`。`blocked.instance.org` 上的用户在 `not-blocked.domain` 上创建了一个帐户,以便他们可以使用新帐户与你的帖子互动或向你发送消息。他们可能会直接跳脸,告诉你他们是谁,或者使用假身份。
|
||||
- 你屏蔽了 `blocked.instance.org`。`not-blocked.domain` 上的用户截屏了你的贴文并将其发送给 `blocked.instance.org` 上的某人。
|
||||
- 你屏蔽了 `blocked.instance.org`。`blocked.instance.org` 上的用户通过浏览器访问你的个人资料,以查看你的公开贴文。
|
||||
- 你屏蔽了 `blocked.instance.org`。你的个人资料启用了 RSS。`blocked.instance.org` 上的用户订阅了你的 RSS feed 以阅读你的公开贴文。
|
||||
|
||||
在上述情况下,`blocked.instance.org` 依然被屏蔽,但该实例的用户可能仍有其他方式查看你的贴文并可能联系到你。
|
||||
|
||||
考虑到这一点,你应始终将域名屏蔽视为隐私保护的*一个层次*。也就是说,域名屏蔽应该与其他层次一起部署,以实现你所满意的隐私水平。这应包括不公开发布敏感信息、不在照片中意外暴露个人信息等。
|
||||
|
||||
### 屏蔽公告机器人
|
||||
|
||||
不幸的是,联邦宇宙中有一些恶意用户,他们将域名屏蔽视为敌人而试图打破。为达到此目的,他们通常会针对那些使用域名屏蔽来保护用户的实例。
|
||||
|
||||
因此,联邦宇宙中有机器人抓取实例域名屏蔽,并向机器人的关注者宣布任何发现的屏蔽,从而使屏蔽实例的管理员可能面临骚扰。这些机器人使用 `api/v1/instance/peers?filter=suspended` 端点来收集域名屏蔽信息。
|
||||
|
||||
默认情况下,GoToSocial 不会公开此端点,因此你的实例将不会被这种方式抓取。然而,如果你在 config.yaml 文件中将 `instance-expose-suspended` 设置为 `true`,你可能会发现此端点偶尔会被抓取,并且你的屏蔽可能会被恶意机器人宣布。
|
||||
|
||||
## 创建域名屏蔽的副作用
|
||||
|
||||
当你创建新的域名屏蔽(或重新提交现有的域名屏蔽)时,你的实例将处理该屏蔽的副作用。这些副作用是:
|
||||
|
||||
1. 将数据库中存储自目标域的所有帐户标记为已封禁,并删除被标记帐户的大多数信息(简介、显示名称、字段等)。
|
||||
2. 清除本地帐户与封禁帐户之间的所有互关或单方面关系(关注、被关注、关注请求、收藏等)。
|
||||
3. 删除封禁帐户的所有贴文。
|
||||
4. 删除封禁帐户及其贴文的所有媒体,包括媒体附件、头像、头图和表情符号。
|
||||
|
||||
!!! danger
|
||||
目前,上述大多数副作用是**不可逆**的。如果你在屏蔽后取消屏蔽一个域名,该域名上的所有帐户将不再被标记为已封禁,并且你将能够再次与他们互动,但所有关系仍将被清除,所有贴文和媒体将被删除。
|
||||
|
||||
在屏蔽一个域名之前请仔细考虑。
|
||||
|
||||
## 屏蔽一个域名及其所有子域
|
||||
|
||||
当你添加一个新的域名屏蔽时,GoToSocial 也将屏蔽该域名的所有子域。如果你不信任域名所有者,你可以选择屏蔽某些特定子域,或者更一般地屏蔽整个域名。
|
||||
|
||||
一些例子:
|
||||
|
||||
1. 你屏蔽 `example.org`。这将屏蔽以下域名(非详尽列表):`example.org`,`subdomain.example.org`,`another-subdomain.example.org`,`sub.sub.sub.domain.example.org`。
|
||||
2. 你屏蔽 `baddies.example.org`。这将屏蔽以下域名(非详尽列表):`baddies.example.org`,`really-bad.baddies.example.org`。然而,以下域名不会被屏蔽(非详尽列表):`example.org`,`subdomain.example.org`,`not-baddies.example.org`。
|
||||
|
||||
一个更实际的例子:
|
||||
|
||||
某个家伙拥有域名 `fossbros-anonymous.io`。他们不仅在 `mastodon.fossbros-anonymous.io` 运行 Mastodon 实例,还在 `gts.fossbros-anonymous.io` 运行 GoToSocial 实例,以及在 `akko.fossbros-anonymous.io` 运行 Akkoma 实例。你希望一次性屏蔽他们的所有这些实例(以及他们可能在未来创建的任何实例,例如 `pl.fossbros-anonymous.io` 等)。你可以通过简单地为 `fossbros-anonymous.io` 创建域名屏蔽来实现。子域上的任何实例将无法与你的实例通信。搞定!
|
||||
62
docs/locales/zh/admin/federation_modes.md
Normal file
62
docs/locales/zh/admin/federation_modes.md
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
# 联合模式
|
||||
|
||||
GoToSocial 当前提供“黑名单”和“白名单”联合模式,可以通过在 `config.yaml` 中设置 `instance-federation-mode`,或者使用环境变量 `GTS_INSTANCE_FEDERATION_MODE` 来配置。这些模式如下所述。
|
||||
|
||||
## 黑名单联合模式(默认)
|
||||
|
||||
当 `instance-federation-mode` 设置为 `blocklist` 时,你的实例将与其他实例自由联合,没有限制,但你在设置面板中明确创建的屏蔽的实例除外。
|
||||
|
||||
当你的实例收到来自不在黑名单内的实例的新请求时,如果请求有效,并且请求者被允许查看所请求的资源(考虑贴文的可见性和任何用户级屏蔽),实例将处理该请求。
|
||||
|
||||
当你的实例遇到它以前未见过的贴文或账户的提及或公告时,如果该资源的域未通过域屏蔽条目被屏蔽,它将会去获取该资源。
|
||||
|
||||
!!! info
|
||||
黑名单联合模式是 GoToSocial 的默认联合模式。它也是大多数其他 ActivityPub 服务器实现的默认联合模式。
|
||||
|
||||
## 白名单联合模式
|
||||
|
||||
!!! warning
|
||||
白名单联合模式仍然被认为是“实验性”的,我们正在研究其在实际中的表现。它应该如其名称所示,但可能会在其他地方导致错误或出现边缘情况,我们还不确定!
|
||||
|
||||
当 `instance-federation-mode` 设置为 `allowlist` 时,你的实例将仅与通过设置面板明确设为允许的实例联合,并限制任何未被允许的实例的访问。
|
||||
|
||||
当你的实例收到来自白名单之外实例的新请求时,它将拒绝处理该请求。如果请求来自白名单中的域名,你的实例将处理该请求(考虑贴文的可见性和任何用户级别的屏蔽)。
|
||||
|
||||
当你的实例遇到它以前未见过的贴文或账户的提及或公告时,它只会在资源所属域名被明确允许时才去获取资源。
|
||||
|
||||
!!! tip
|
||||
白名单联合模式在你希望仅与选择的“可信”实例联合的情况下非常有用。然而,这会影响发现过程。在黑名单联合模式下,你会通过转发和回复自然地遇到未知实例的贴文和账户,但在白名单联合模式下,这样的偶然发现不会发生。
|
||||
|
||||
因此,建议你要么先从黑名单联合模式开始,然后在确定喜欢哪些其他实例后切换到白名单联合模式,要么从白名单联合模式开始,并在首次启动实例后准备好并导入白名单,以便“启动”它。
|
||||
|
||||
## 结合屏蔽与允许
|
||||
|
||||
可以同时屏蔽和允许同一个域,结合这两者的效果取决于你的实例当前使用的联合模式。
|
||||
|
||||

|
||||
|
||||
### 在黑名单模式下
|
||||
|
||||
如图所示,在黑名单模式下(图的左侧),显式添加允许条目可以用来覆盖域名屏蔽。
|
||||
|
||||
这在你从其他人处导入黑名单,但导入的黑名单中包含了一些你实际上不想屏蔽的实例时很有用。为了避免屏蔽这些实例,你可以先为这些实例显式创建允许条目。然后,当你导入黑名单时,显式允许的域将不会被屏蔽,并且创建屏蔽所导致的副作用(删除贴文、媒体、关系等)将不会被处理。
|
||||
|
||||
如果你以后移除对于同时存在屏蔽的域的显式允许,该实例将被屏蔽,并且将处理屏蔽创建的相关影响。
|
||||
|
||||
相反,如果你为被屏蔽的域添加显式允许,将处理解除屏蔽的相关影响。
|
||||
|
||||
### 在白名单模式下
|
||||
|
||||
如图所示,在白名单模式下(图的右侧),显式域名屏蔽条目会优先于显式域名允许条目。在运行白名单模式时,必须满足以下两个条件才能允许一个实例通过:
|
||||
|
||||
1. 实例没有存在对应的显式域名屏蔽。
|
||||
2. 实例存在对应的显式域名允许。
|
||||
|
||||
如果上述任何条件不满足,请求将被拒绝。
|
||||
|
||||
!!! danger
|
||||
结合屏蔽和允许是一项棘手的工作!
|
||||
|
||||
在导入允许和黑名单时,你应该始终手动审核列表,以确保不会无意中屏蔽你不想屏蔽的实例,因为这可能会有**非常烦人的副作用**,例如移除关注/被关注、贴文等。
|
||||
|
||||
有疑问时,请始终首先添加显式允许作为保险策略!
|
||||
57
docs/locales/zh/admin/media_caching.md
Normal file
57
docs/locales/zh/admin/media_caching.md
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# 媒体缓存
|
||||
|
||||
GoToSocial 使用配置的[存储后端](https://docs.gotosocial.org/zh-cn/latest/configuration/storage/)来存储由本站用户上传到实例的媒体(图像、视频等),并缓存从外站实例联合过来的贴文和个人资料中附带的媒体。
|
||||
|
||||
由本站用户上传的媒体将会永久保存在存储中(除非其所属的贴文或账户被删除),以便能够随时响应来自外站的请求。
|
||||
|
||||
另一方面,外站媒体仅会被临时缓存。经过一段时间(见下文)后,它将从存储中移除,以帮助缓解存储空间的使用。通过这种方式被移除缓存的外站媒体,如果再次需要,将自动从外站重新获取。
|
||||
|
||||
!!! info "为什么要缓存?"
|
||||
你可能会认为应该完全不缓存外站媒体,因为它始终可以在原始服务器上获取。为什么不完全放弃缓存,而依赖外站根据需求提供服务呢?
|
||||
|
||||
虽然这是节省存储空间的一种简单方法,但它可能会引发其他问题,并且通常被认为是不够礼貌的做法。
|
||||
|
||||
例如,假设某个小实例的用户发布了一条带有图片的有趣贴文。该贴文被一个拥有1000名跨5个不同实例(每个实例200人)关注者的账号转发。这1000人便会同时在时间线上看到这个图片。
|
||||
|
||||
如果没有外站媒体缓存,可能会导致多达1000个请求同时冲击小实例,因为每个接收者的浏览器必须单独请求从小实例获取该图片。这会导致小实例的流量激增。在极端情况下,可能导致实例无响应或崩溃,本质上是对其进行分布式拒绝服务攻击(DDOS)。
|
||||
|
||||
然而,通过启用外站媒体缓存,将一条贴文转发给1000名来自5个不同实例的用户仅会向小实例发出5个请求:每个实例1个请求。然后,每个实例会从缓存的外站图片版本为其本站用户提供200个请求,有效地分散了负载,保护了较小的实例。
|
||||
|
||||
## 清理
|
||||
|
||||
外站媒体缓存的清理是一个计划的后台进程,管理员无需手动干预。根据服务器速度、配置的存储速度和待处理的媒体数量,清理时间大约在5到30分钟之间。
|
||||
|
||||
GoToSocial 提供了三个变量,让你(管理员)可以调节何时以及如何进行这些操作:`media-remote-cache-days`、`media-cleanup-from` 和 `media-cleanup-every`。
|
||||
|
||||
默认情况下,这些变量设置如下:
|
||||
|
||||
| 变量名称 | 默认值 | 含义 |
|
||||
|-----------------------------|--------------|----------|
|
||||
| `media-remote-cache-days` | `7` | 7天 |
|
||||
| `media-cleanup-from` | `"00:00"` | 午夜 |
|
||||
| `media-cleanup-every` | `"24h"` | 每日 |
|
||||
|
||||
换句话说,默认设置意味着每晚午夜,超过一周的外站媒体将被清除并从存储中移除。
|
||||
|
||||
你可以通过调节这些变量实现不同的效果。例如,如果你希望在凌晨4:30而不是午夜进行清理,你可以将 `media-cleanup-from` 改为 `"04:30"`。
|
||||
|
||||
如果你只想每隔几天而不是每晚进行清理,可以将 `media-cleanup-every` 设置为更高的值,如 `"48h"` 或 `"72h"`。
|
||||
|
||||
如果你想采用更积极的清理策略以尽量减少存储使用,可以设置以下值:
|
||||
|
||||
| 变量名称 | 设置值 | 含义 |
|
||||
|-----------------------------|--------------|-----------------|
|
||||
| `media-remote-cache-days` | `1` | 1天 |
|
||||
| `media-cleanup-from` | `"00:00"` | 午夜 |
|
||||
| `media-cleanup-every` | `"8h"` | 每8小时 |
|
||||
|
||||
上述设置意味着从午夜开始每8小时,GoToSocial 将清除任何缓存超过1天(24小时)的媒体。清理任务将在 00:00、08:00 和 16:00,即午夜、上午8点和下午4点运行。使用此配置,你可能将外站媒体在存储中保留的最长时间约为32小时。
|
||||
|
||||
!!! tip
|
||||
将 `media-remote-cache-days` 设置为0或更小意味着外站媒体将永不被清除。然而,本站孤立媒体的清理任务和其他一致性检查仍将按其他变量定义的计划运行。
|
||||
|
||||
!!! tip
|
||||
如果你愿意,你也可以通过管理面板手动执行一次性清理操作([查看文档](./settings.md#媒体))。
|
||||
|
||||
!!! warning
|
||||
将 `media-cleanup-every` 设置为非常小的值,如 `"30m"` 或更小,可能会导致你的实例不断遍历附件,导致数据使用率高而效益甚微。我们不建议将该值设置为小于约 `"8h"`,即便如此,可能也显得过度。
|
||||
31
docs/locales/zh/admin/request_filtering_modes.md
Normal file
31
docs/locales/zh/admin/request_filtering_modes.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# HTTP 请求头过滤模式
|
||||
|
||||
GoToSocial 当前提供“屏蔽”、“允许”和禁用的 HTTP 请求头过滤模式,可以通过在 config.yaml 中设置 `advanced-header-filter-mode`,或使用环境变量 `GTS_ADVANCED_HEADER_FILTER_MODE` 来配置。这些模式的具体说明如下。
|
||||
|
||||
!!! warning
|
||||
HTTP 请求头过滤是一个进阶设置。如果你不熟悉 HTTP 请求头的使用和复杂性,修改这些设置可能会导致联合功能中断,甚至无法访问你自己的实例。
|
||||
|
||||
HTTP 请求头过滤仍被视为“实验性”功能。它应该能如预期工作,但可能会导致其他地方出现错误或边缘情况,这点我们尚不确定!
|
||||
|
||||
## 禁用请求头过滤模式(默认)
|
||||
|
||||
当 `advanced-header-filter-mode` 设置为 `""`(即空字符串)时,将禁用所有请求头过滤。
|
||||
|
||||
## 屏蔽过滤模式
|
||||
|
||||
当 `advanced-header-filter-mode` 设置为 `"block"` 时,你的实例将正常接受 HTTP 请求(需进行 API 令牌检查、HTTP 签名检查等),但会拒绝符合你通过设置面板明确创建的屏蔽头过滤规则的请求。
|
||||
|
||||
在屏蔽模式中,可以使用允许头过滤规则来覆盖现有的屏蔽过滤规则,以提供更细致的控制。
|
||||
|
||||
在屏蔽模式下,请求将被接受,前提是该请求被明确允许或未被明确屏蔽。
|
||||
|
||||
## 允许过滤模式
|
||||
|
||||
当 `advanced-header-filter-mode` 设置为 `"allow"` 时,你的实例只会接受那些与通过设置面板明确创建的允许头过滤规则相匹配的 HTTP 请求。所有其他请求将被拒绝。
|
||||
|
||||
在允许模式中,可以使用屏蔽头过滤规则来覆盖现有的允许过滤规则,以提供更细致的控制。
|
||||
|
||||
在允许模式下,请求只有在被明确允许且未被明确屏蔽的情况下才会被接受。
|
||||
|
||||
!!! danger
|
||||
允许过滤模式是一个极为严格的模式,几乎肯定会阻止许多(合法的)客户端访问你的实例,包括你自己。只有在完全明确你的目标时才应启用此模式。
|
||||
13
docs/locales/zh/admin/robots.md
Normal file
13
docs/locales/zh/admin/robots.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# Robots.txt
|
||||
|
||||
GoToSocial 在主域名上提供一个 `robots.txt` 文件。该文件包含试图屏蔽已知 AI 爬虫的一些规则,以及其他一些索引器。它还包括一些规则,以确保诸如 API 端点之类的内容不会被搜索引擎索引,因为这些内容没有被索引的必要。
|
||||
|
||||
## AI 爬虫
|
||||
|
||||
AI 爬虫来自一个[社区维护的仓库][airobots]。目前是手动保持同步的。如果你知道有任何遗漏的爬虫,请给他们提交一个 PR!
|
||||
|
||||
已知有许多 AI 爬虫即便明确匹配其 User-Agent,也会忽略 `robots.txt` 中的条目。这意味着 `robots.txt` 文件并不是确保 AI 爬虫不抓取你的内容的万无一失的方法。
|
||||
|
||||
如果你想完全屏蔽这些爬虫,需要在反向代理中根据 User-Agent 头进行屏蔽,直到 GoToSocial 能够根据 User-Agent 头过滤请求。
|
||||
|
||||
[airobots]: https://github.com/ai-robots-txt/ai.robots.txt/
|
||||
169
docs/locales/zh/admin/settings.md
Normal file
169
docs/locales/zh/admin/settings.md
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
# 管理设置面板
|
||||
|
||||
GoToSocial 管理设置面板使用 [管理 API](https://docs.gotosocial.org/zh-cn/latest/api/swagger/#operations-tag-admin) 来管理你的实例。它与 [用户设置面板](../user_guide/settings.md) 结合使用,并采用与普通客户端相同的 OAuth 机制(范围:admin)。
|
||||
|
||||
## 设置管理员账户权限和登录
|
||||
|
||||
要使用管理设置面板,你的账户必须被提升为管理员:
|
||||
|
||||
```bash
|
||||
./gotosocial --config-path ./config.yaml admin account promote --username 你的用户名
|
||||
```
|
||||
|
||||
为了使提权生效,可能需要在运行命令后重启你的实例。
|
||||
|
||||
之后,你可以访问 `https://[your-instance-name.org]/settings`,在登录字段中输入你的域名,然后像使用其他客户端一样登录。现在,你应该可以看到管理设置。
|
||||
|
||||
## 管理
|
||||
|
||||
实例管理设置。
|
||||
|
||||
### 举报
|
||||
|
||||

|
||||
|
||||
举报部分显示来自本站用户或外站(匿名显示,仅显示实例名称,不显示具体用户名)的举报列表。
|
||||
|
||||
点击举报可以查看其是否已解决(若有理由则显示),更多信息,以及由举报用户选定的被举报贴文列表。你也可以在此视图中将举报标记为已解决,并填写评论。如果该用户来自你的实例,你在此处输入的任何评论都会对创建举报的用户可见。
|
||||
|
||||

|
||||
|
||||
点击被举报账户的用户名会在“账户”视图中打开该账户,从而允许你对其执行管理操作。
|
||||
|
||||
### 账户
|
||||
|
||||
你可以使用此部分搜索账户并对其执行管理操作。
|
||||
|
||||
### 联合
|
||||
|
||||

|
||||
|
||||
在联合部分,你可以创建、删除和审核明确的域名屏蔽和域名允许。
|
||||
|
||||
关于联合设置的更多详细信息,特别是域名允许和域名屏蔽如何结合使用,请参阅 [联合模式部分](./federation_modes.md) 和 [域名屏蔽部分](./domain_blocks.md)。
|
||||
|
||||
#### 域名屏蔽
|
||||
|
||||
你可以在搜索字段中输入一个要封禁的域名,这将过滤列表以显示你是否已有该域名的屏蔽条目。
|
||||
|
||||
点击“封禁”会显示一个表单,允许你添加公开和/或私人评论,并提交以添加屏蔽。添加封禁后,该实例上的所有已知账户将被封禁,并阻止与该被屏蔽实例上的任何用户的新互动。
|
||||
|
||||
#### 域名允许
|
||||
|
||||
域名允许部分的工作方式与域名屏蔽部分类似,只是用于明确的域名允许而不是域名屏蔽。
|
||||
|
||||
#### 批量导入/导出
|
||||
|
||||
通过联合部分底部的链接(或访问 `/settings/admin/federation/import-export`),你可以批量导入/导出屏蔽列表和允许列表。
|
||||
|
||||

|
||||
|
||||
通过输入字段或文件导入列表后,你可以在导入子集之前查看列表中的条目。你还会在使用子域的条目中收到警告,此处还提供一种轻松将其更改为主域的方法。
|
||||
|
||||
## 管理
|
||||
|
||||
实例管理设置。
|
||||
|
||||
### 操作
|
||||
|
||||
运行一次性管理操作。
|
||||
|
||||
#### 电子邮件
|
||||
|
||||
你可以使用此部分向指定的电子邮件地址发送测试邮件,并附加可选的测试信息。
|
||||
|
||||
#### 媒体
|
||||
|
||||
你可以使用此部分运行清理外站媒体缓存的操作,可以指定天数。超过指定天数的媒体将从存储中删除(s3 或本地)。以这种方式删除的媒体将未来需要时重新尝试获取。此操作在功能上与自动运行的媒体清理相同。
|
||||
|
||||
#### 密钥
|
||||
|
||||
你可以使用此部分使来自特定外站实例的公钥过期/失效。下次你的实例收到使用过期密钥的签名请求时,它将尝试重新获取和存储公钥。
|
||||
|
||||
### 自定义表情
|
||||
|
||||
包含在外站贴文中的自定义表情将自动获取,但要在你的帖子中使用它们,必须在你的实例上启用。
|
||||
|
||||
#### 本站
|
||||
|
||||

|
||||
|
||||
此部分显示你的实例上启用的所有自定义表情的概览,按类别排序。点击某个表情可显示其详细信息,并提供更改类别或图像的选项,或完全删除它。这里无法更新短代码,你需要自己上传带有新短代码的表情(可以选择删除旧的表情)。
|
||||
|
||||
在概览下方,你可以在预览表情在贴文中的效果后上传自己的自定义表情。支持 PNG 和(动画)GIF 格式。
|
||||
|
||||
#### 外站
|
||||
|
||||

|
||||
|
||||
通过“外站”部分,你可以查找任何外站贴文的链接(前提是该实例未被封禁)。如果使用了任何自定义表情,它们将被列出,这样就提供了一种轻松复制到本站表情的方法(供你自己在贴文中使用),或者也可以禁止它们(从贴文中隐藏)。
|
||||
|
||||
**注意:**由于 testrig 服务器未进行联合,此功能在开发过程中无法使用(500:内部服务器错误)。
|
||||
|
||||
### 实例设置
|
||||
|
||||

|
||||
|
||||
在这里,你可以为你的实例设置各种元数据,如显示名称/标题、缩略图、(简短)描述和联系信息。
|
||||
|
||||
#### 实例外观
|
||||
|
||||
这些设置主要影响你的实例在网络和他人眼中的显示方式。
|
||||
|
||||
你的 **实例标题** 将显示在你实例每个网页的顶部,并在 OpenGraph 元标签中出现,所以选择一个能代表你实例氛围的名称。
|
||||
|
||||
**实例头像** 类似于你实例的吉祥物。它将出现在每个网页顶上的实例标题旁边,并作为浏览器标签、OpenGraph 链接等的预览图像。
|
||||
|
||||
如果你设置了实例头像,我们强烈建议同时设置 **头像描述**。这将为你设置为头像的图片提供替代文字,帮助屏幕阅读器用户理解图片中描绘的内容。替代文本应保持简短明了。
|
||||
|
||||
#### 实例描述
|
||||
|
||||
你可以使用这些字段设置实例的简短和完整描述,并为当前和潜在用户提供实例使用条款。
|
||||
|
||||
**简短描述** 将显示在实例主页的顶部附近,以及响应 `/api/v1/instance` 查询时显示。
|
||||
|
||||
可以提供一些精辟的内容,以便访问你的实例的访客对你的实例有一个第一印象。例如:
|
||||
|
||||
> 这是一个 ACG 爱好者的实例!
|
||||
>
|
||||
> 不管磕什么都可以来注册。
|
||||
|
||||
或者:
|
||||
|
||||
> 这是一个单用户实例,只属于我!
|
||||
>
|
||||
> 这是我的主页:@your_username
|
||||
|
||||
**完整描述** 将显示在你的实例的 /about 页面上,并在响应 `/api/v1/instance` 查询时显示。
|
||||
|
||||
你可以用它来提供如下信息:
|
||||
|
||||
- 你的实例的历史、理念、态度和氛围
|
||||
- 你实例上的居民倾向于发布的内容类型
|
||||
- 如何在你的实例上获得账户(如果可能的话)
|
||||
- 一个拥有账户的用户列表,希望更容易被找到
|
||||
|
||||
**使用条款** 框也会出现在你的实例的 /about 页面上,并在响应 `/api/v1/instance` 查询时显示。
|
||||
|
||||
用它来填写如下内容:
|
||||
|
||||
- 法律术语(版权、GDPR 或相关链接)
|
||||
- 联合政策
|
||||
- 数据政策
|
||||
- 账户删除/封禁政策
|
||||
|
||||
以上所有字段都接受 **markdown** 输入,因此你可以编写合适的列表、代码块、水平线、引用块或任何你喜欢的内容。
|
||||
|
||||
你也可以使用标准 `@user[@domain]` 格式提及账户。
|
||||
|
||||
查看 [markdown 速查表](https://markdownguide.offshoot.io/cheat-sheet/) 以了解可以做些什么。
|
||||
|
||||
### 实例联系信息
|
||||
|
||||
在此部分中,你可以向访问你实例的用户提供一种方便的方法,以联系你的实例管理员。
|
||||
|
||||
设置好的联系人账户和/或电子邮件地址的链接将出现在实例的每个网页底部、/about 页面的“联系”部分,以及响应 `/api/v1/instance` 查询时显示。
|
||||
|
||||
选择的 **联系人用户** 必须是实例上的活跃(未封禁)的管理员和/或站务。
|
||||
|
||||
如果你是在单用户实例上并将管理员权限授予你的主账户,你只需在此处填写自己的用户名即可;无需为此专门创建管理账户。
|
||||
59
docs/locales/zh/admin/signups.md
Normal file
59
docs/locales/zh/admin/signups.md
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# 新账户注册
|
||||
|
||||
如果你希望你的实例不仅限于你自己,还可以让其他人注册账户,你可以开放你的实例供新账户注册。
|
||||
|
||||
注意,作为实例管理员,无论你是否愿意,你都需对在你的实例上发布的内容负责。如果你的实例用户在联合网上骚扰或烦扰他人,可能会导致你的实例名誉受损,并被其他人屏蔽。妥善管理一个社区需要付出努力。因此,你应仔细考虑是否愿意且有能力进行管理,及是否只接受朋友和你非常信任的人注册账户。
|
||||
|
||||
!!! warning
|
||||
为使注册流程正常运作,你的实例应[配置电子邮件发件服务](../configuration/smtp.md)。
|
||||
|
||||
如下所述,在注册流程中,会向你(作为管理员/站务)和申请人发送几封邮件,包括要求对方确认邮箱地址的邮件。
|
||||
|
||||
如果他们无法收到此邮件(因为你的实例未配置电子邮件发件服务),你将需要通过[使用 CLI 工具](../admin/cli.md#gotosocial-admin-account-confirm)手动确认账户。
|
||||
|
||||
## 开放注册
|
||||
|
||||
你可以通过在[配置文件](../configuration/accounts.md)中将变量 `accounts-registration-open` 修改为 `true`,并重启你的 GoToSocial 实例来开放新账户注册。
|
||||
|
||||
你的实例将会在 `/signup` 端点提供注册表单。例如,`https://your-instance.example.org/signup`。
|
||||
|
||||

|
||||
|
||||
此外,你的实例主页和“关于”页面将更新,以反映注册现已开放。
|
||||
|
||||
当有人提交新注册申请时,他们会在提供的电子邮件地址收到一封邮件,其中包含一个链接,用于确认该地址确实属于他们。
|
||||
|
||||
同时,你实例上的管理员和站务会收到一封邮件和一条通知,告知有新的注册申请提交。
|
||||
|
||||
## 处理注册
|
||||
|
||||
实例管理员和版主可以通过管理面板中的“账户” -> “待处理”部分来审批或拒绝新注册。
|
||||
|
||||

|
||||
|
||||
如果没有注册申请,以上列表将为空。如果有待处理的注册申请,你可以点击打开账户详情页:
|
||||
|
||||

|
||||
|
||||
在底部,你会看到批准或拒绝注册的操作选项。
|
||||
|
||||
如果你**批准**注册,账户将被标记为“已批准”,并会向申请人发送一封邮件,通知其注册已获批准,并提醒他们确认电子邮件地址(如果尚未确认)。如果已经确认,他们就可以登录并开始使用他们的账户。
|
||||
|
||||
如果你**拒绝**注册,可以选择通知申请人注册被拒,你可以通过勾选“发送邮件”复选框来实现。这将向申请人发送一封简短邮件,告知其被拒。如果需要,还可以添加自定义消息,该消息将添加在邮件底部。你还可以添加仅供其他管理员查看的私人备注。
|
||||
|
||||
!!! warning
|
||||
你可能希望等申请人确认他们的电子邮件地址后再批准注册,以防申请时输入错误或提供不是他们的电子邮件地址。如果他们不能确认电子邮件地址,将无法登录和使用账户。
|
||||
|
||||
## 注册限制
|
||||
|
||||
为了避免注册积压过多使管理员和版主不堪重负,GoToSocial 将待处理注册积压限制为 20 个账户。一旦积压中有 20 个账户等待管理员或版主处理,新注册将不能通过表单提交。
|
||||
|
||||
如果过去 24 小时内已批准 10 个或以上新账户注册,新的注册也将不能通过表单提交,以避免实例规模快速扩张超出管理能力。
|
||||
|
||||
在这两种情况下,申请人将看到一条错误信息,解释无法提交表单的原因,并邀请他们稍后再试。
|
||||
|
||||
为了防止垃圾账户,GoToSocial 的账户注册**始终**需要管理员手动批准,并且申请人**始终**需确认其电子邮件地址后才能登录和发布贴文。
|
||||
|
||||
## 通过邀请注册
|
||||
|
||||
尚未实现: 在未来的更新中,管理员和版主将能够创建和发送邀请,即使公共注册关闭时也允许创建账户,并可预先批准通过邀请创建的账户,和/或允许其绕过上述注册限制。
|
||||
23
docs/locales/zh/admin/spam.md
Normal file
23
docs/locales/zh/admin/spam.md
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# 骚扰信息过滤
|
||||
|
||||
为了让管理员在应对来自开放注册实例的骚扰信息时稍微轻松一些,GoToSocial 提供了一个实验性的骚扰信息过滤选项。
|
||||
|
||||
如果你或你的用户受到骚扰信息的轰炸,可以尝试在 `config.yaml` 中将选项 `instance-federation-spam-filter` 设置为 true。你可以在[实例配置页面](../configuration/instance.md)了解有关使用的启发算法的更多信息。
|
||||
|
||||
被认为是骚扰信息的消息将不会存储在你的本站实例上,也不会生成通知。
|
||||
|
||||
!!! warning
|
||||
骚扰信息过滤器必然是不完美的工具,因为它们可能会误判一些合法的信息为垃圾,或者确实未能抓住一些*确实*是垃圾的信息。
|
||||
|
||||
启用 `instance-federation-spam-filter` 应被视为当联合网络遭遇骚扰信息攻击时的一种“加固”选项。在正常情况下,你可能希望将其关闭,以避免意外过滤掉合法信息。
|
||||
|
||||
!!! tip
|
||||
如果你想检查骚扰信息过滤器捕获了哪些内容(如果有的话),可以在日志中搜索 `looked like spam`。
|
||||
|
||||
如果你[将 GoToSocial 作为 systemd 服务运行](../getting_started/installation/metal.md#optional-enable-the-systemd-service),可以使用以下命令:
|
||||
|
||||
```bash
|
||||
journalctl -u gotosocial --no-pager | grep 'looked like spam'
|
||||
```
|
||||
|
||||
如果没有输出,说明过滤器中没有捕获到骚扰信息。否则,你将看到一行或多行日志,其中包含已被过滤并丢弃的贴文链接。
|
||||
13
docs/locales/zh/admin/themes.md
Normal file
13
docs/locales/zh/admin/themes.md
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# 主题
|
||||
|
||||
你在本站的用户可以从 `web/assets/themes` 目录中的任何 CSS 文件中选择一个主题来装饰他们的个人资料。
|
||||
|
||||
GoToSocial 自带了一些主题文件,但你可以通过以下方式添加更多:
|
||||
|
||||
1. 在 `web/assets/themes` 中创建一个文件,例如 `new-theme.css`。
|
||||
2. (可选)在你的主题文件顶部加入以下注释来给你的主题命名和描述:
|
||||
```css
|
||||
/*
|
||||
theme-title: 新主题
|
||||
theme-description: 这是一个示例主题。
|
||||
*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue