diff --git a/docs/DONATORS.md b/docs/DONATORS.md deleted file mode 100644 index 9da5c1a94..000000000 --- a/docs/DONATORS.md +++ /dev/null @@ -1,25 +0,0 @@ -DONATORS -======== -The list of people who have sent donation for Misskey. - -(In random order, honorific titles are omitted.) - -* らふぁ -* 俺様 -* なぎうり -* スルメ https://surume.tk/ -* 藍 -* 音船 https://otofune.me/ -* aqz https://misskey.xyz/aqz -* kotodu "虚無創作中" -* Maya Minatsuki -* Knzk https://knzk.me/@Knzk -* ねじりわさび https://knzk.me/@y -* NCLS https://knzk.me/@imncls] -* こじま @skoji@sandbox.skoji.jp - -:heart: Thanks for donating, guys! - ---- - -If your name is missing, please contact us! diff --git a/docs/default-reaction.md b/docs/default-reaction.md new file mode 100644 index 000000000..ff2d86f2c --- /dev/null +++ b/docs/default-reaction.md @@ -0,0 +1,2 @@ +# Changing the default Reaction +You can change the default reaction that is used when an ActivityPub "Like" is received from '👍' to '⭐' by changing the boolean value `meta.useStarForReactionFallback` in the databse respectively. \ No newline at end of file diff --git a/docs/emoji.md b/docs/emoji.md new file mode 100644 index 000000000..257cbc39d --- /dev/null +++ b/docs/emoji.md @@ -0,0 +1,111 @@ +# Managing Custom Emoji + +Custom emoji can be managed by administrators or moderators by going to the instance settings and then the custom emoji submenu. +By default you will see a list of the current locally installed emoji. +At the start this list will be empty, but you can add custom emoji in different ways. + +## Copying Emoji from another Instance + +Emoji can be easily copied from another instance. +To do this, switch to the "remote" tab in the custom emoji settings. +You can search emoji by name and/or host they are from. + +When you have found an emoji you want, click it to open a small menu which will allow you to import the emoji. + +Please note that Emoji may be subject to copyright and you are responsible for checking whether you may legally use another emoji. + +## Individual Emoji Import + +If you have an image file that you would like to turn into a custom emoji you can import the image as an emoji. +This works just like attaching files to a note: +You can choose to upload a new file, pick a file from your Misskey drive or upload a file from another URL. + +::: danger +When you import emoji from your drive, the file will remain inside your drive. +Misskey does not make a copy of this file so if you delete it, the emoji will be broken. +::: + +The emoji will be added to the instance and you will then be able to edit or delete it as usual. + +## Bulk Emoji import + +Emojis can be imported in bulk as packed ZIP files with a special format. +This ability can be found in the three dots menu in the top right corner of the custom emoji menu. + +::: warning +Bulk emoji import may overwrite existing emoji or otherwise mess up your instance. +Be sure to only import emoji from trusted sources, ideally only ones you exported yourself. +::: + +### Packed emoji format + +At the top level is a file called `meta.json` which contains information about the emoji contained in the packed file. +A type definition for this file would look like this, where `Meta` is the structure of the whole file. + +```typescript +class Meta { + metaVersion: number; + host: string; + /** + * Date and time representation returned by ECMAScript `Date.prototype.toString`. + */ + exportedAt: string; + emojis: Emoji[]; +} + +class Emoji { + downloaded: boolean; + fileName: string; + emoji: { + id: string; + updatedAt: string; + name: string; + host: null; + category: string; + originalUrl: string; + publicUrl: string; + uri: null; + type: string; + aliases: string[]; + }; +} +``` + +The fields of `Meta` are currently not used or checked when importing emoji, except for the `emojis` field. + +For each `Emoji`: +- `downloaded`: should always be true. If the field is missing or not truthy, the emoji will not be imported. +- `fileName`: name of the image file inside the packed file. +- `emoji`: data associated with the emoji as it was stored in the database. Currently most of these fields are + not even checked for existence. The following are currently used: + - `name`: name of the emoji for the user, e.g. `blobfox` if a user should type in `:blobfox:` to get the emoji. + If a previous emoji with the same name exists, it **will be overwritten**! + - `category`: category of the emoji + - `aliases`: list of strings that should be added as aliases. The admin UI calls these "tags". + +## Editing and Deleting Emoji + +The properties of an emoji can be edited by clicking it in the list of local emoji. +When you click on a custom emoji, a dialog for editing the properties will open. +This dialog will also allow you to delete an emoji. + +::: danger +When you delete a custom emoji, old notes that contain it will still have the text name of the emoji in it. +The emoji will no longer be rendered correctly. +::: + +Note that remote emoji can not be edited or deleted. + +Each emoji can have a name and a category and several tags. +The category is used for structuring the emoji picker. +Meanwhile the tags can be used as alternate names by which the emoji can be found when searching in the emoji picker. + +When you are done editing, save your changes by clicking the check mark in the top right corner of the dialog. + +### Bulk Editing + +Emoji can be edited in bulk by checking the box below the search field. +With this enabled, clicking on an emoji will select it instead of opening the editing dialog. + +The Editing options will be displayed as buttons below the checkbox. +To return to the normal behaviour just uncheck the box again. diff --git a/docs/nginx.md b/docs/nginx.md new file mode 100644 index 000000000..59daa4a1a --- /dev/null +++ b/docs/nginx.md @@ -0,0 +1,86 @@ +# Nginx configuration +1. Create `/etc/nginx/conf.d/misskey.conf` or `/etc/nginx/sites-available/misskey.conf` and copy the following example to the file.\ + (The file name does not have to be "misskey".) +2. Edit as follows: + 1. Replace example.tld with the domain you have prepared.\ + `ssl_certificate` and `ssl_certificate_key` should be the path to the certificate obtained from Let's Encrypt. + 2. If using a CDN such as Cloudflare, remove 4 lines from "If it's behind another reverse proxy or CDN, remove the following." +3. If you create `/etc/nginx/sites-available/misskey.conf`, create symlink as `/etc/nginx/sites-enabled/misskey.conf`.\ + `sudo ln -s /etc/nginx/sites-available/misskey.conf /etc/nginx/sites-enabled/misskey.conf` +4. Run `sudo nginx -t` to verify that the configuration file will be loaded successfully. +5. Run `sudo systemctl restart nginx` to restart nginx. + +# Nginx cofig example + +```nginx +# For WebSocket +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off; + +server { + listen 80; + listen [::]:80; + server_name example.tld; + + # For SSL domain validation + root /var/www/html; + location /.well-known/acme-challenge/ { allow all; } + location /.well-known/pki-validation/ { allow all; } + location / { return 301 https://$server_name$request_uri; } +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name example.tld; + + ssl_session_timeout 1d; + ssl_session_cache shared:ssl_session_cache:10m; + ssl_session_tickets off; + + # To use Let's Encrypt certificate + ssl_certificate /etc/letsencrypt/live/example.tld/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem; + + # To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate) + #ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; + #ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; + + # SSL protocol settings + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; + ssl_prefer_server_ciphers off; + ssl_stapling on; + ssl_stapling_verify on; + + # Change to your upload limit + client_max_body_size 80m; + + # Proxy to Node + location / { + proxy_pass http://127.0.0.1:3000; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_redirect off; + + # If it's behind another reverse proxy or CDN, remove the following. + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + + # For WebSocket + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + + # Cache settings + proxy_cache cache1; + proxy_cache_lock on; + proxy_cache_use_stale updating; + add_header X-Cache $upstream_cache_status; + } +} +```