#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # Misskey configuration #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # ┌──────────────────────────────┐ #───┘ a boring but important thing └──────────────────────────── # # First of all, let me tell you a story that may possibly be # boring to you and possibly important to you. # # Misskey is licensed under the AGPLv3 license. This license is # known to be often misunderstood. Please read the following # instructions carefully and select the appropriate option so # that you do not negligently cause a license violation. # # -------- # Option 1: If you host Misskey AS-IS (without any changes to # the source code. forks are not included). # # Step 1: Congratulations! You don't need to do anything. # -------- # Option 2: If you have made changes to the source code (forks # are included) and publish a Git repository of source # code. There should be no access restrictions on # this repository. Strictly speaking, it doesn't have # to be a Git repository, but you'll probably use Git! # # Step 1: Build and run the Misskey server first. # Step 2: Open in # your browser with the administrator account. # Step 3: Enter the URL of your Git repository in the # "Repository URL" field. # -------- # Option 3: If neither of the above applies to you. # (In this case, the source code should be published # on the Misskey interface. IT IS NOT ENOUGH TO # DISCLOSE THE SOURCE CODE WEHN A USER REQUESTS IT BY # E-MAIL OR OTHER MEANS. If you are not satisfied # with this, it is recommended that you read the # license again carefully. Anyway, enabling this # option will automatically generate and publish a # tarball at build time, protecting you from # inadvertent license violations. (There is no legal # guarantee, of course.) The tarball will generated # from the root directory of your codebase. So it is # also recommended to check directory # once after building and before activating the server # to avoid ACCIDENTAL LEAKING OF SENSITIVE INFORMATION. # To prevent certain files from being included in the # tarball, add a glob pattern after line 15 in # . DO NOT FORGET TO BUILD AFTER # ENABLING THIS OPTION!) # # Step 1: Uncomment the following line. # # publishTarballInsteadOfProvideRepositoryUrl: true # ┌─────┐ #───┘ URL └───────────────────────────────────────────────────── # Final accessible URL seen by a user. # You can set url from an environment variable instead. url: https://booping.synth.download/ # ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE # URL SETTINGS AFTER THAT! # ┌───────────────────────┐ #───┘ Port and TLS settings └─────────────────────────────────── # # Misskey requires a reverse proxy to support HTTPS connections. # # +----- https://example.tld/ ------------+ # +------+ |+-------------+ +----------------+| # | User | ---> || Proxy (443) | ---> | Misskey (3000) || # +------+ |+-------------+ +----------------+| # +---------------------------------------+ # # You need to set up a reverse proxy. (e.g. nginx) # An encrypted connection with HTTPS is highly recommended # because tokens may be transferred in GET requests. # The port that your Misskey server should listen on. port: 60628 # ┌──────────────────────────┐ #───┘ PostgreSQL configuration └──────────────────────────────── db: host: gyattabase port: 5432 # Database name # You can set db from an environment variable instead. db: misskey # Auth # You can set user and pass from environment variables instead. user: misskey pass: rizzrizzrizz # Whether disable Caching queries #disableCache: true # Extra Connection options #extra: # ssl: true dbReplications: false # You can configure any number of replicas here #dbSlaves: # - # host: # port: # db: # user: # pass: # - # host: # port: # db: # user: # pass: # ┌─────────────────────┐ #───┘ Redis configuration └───────────────────────────────────── redis: host: redis port: 6379 #family: 0 # 0=Both, 4=IPv4, 6=IPv6 #pass: example-pass #prefix: example-prefix #db: 1 #redisForPubsub: # host: redis # port: 6379 # #family: 0 # 0=Both, 4=IPv4, 6=IPv6 # #pass: example-pass # #prefix: example-prefix # #db: 1 #redisForJobQueue: # host: redis # port: 6379 # #family: 0 # 0=Both, 4=IPv4, 6=IPv6 # #pass: example-pass # #prefix: example-prefix # #db: 1 #redisForTimelines: # host: redis # port: 6379 # #family: 0 # 0=Both, 4=IPv4, 6=IPv6 # #pass: example-pass # #prefix: example-prefix # #db: 1 # ┌───────────────────────────────┐ #───┘ Fulltext search configuration └───────────────────────────── # These are the setting items for the full-text search provider. fulltextSearch: # You can select the ID generation method. # - sqlLike (default) # Use SQL-like search. # This is a standard feature of PostgreSQL, so no special extensions are required. # - sqlPgroonga # Use pgroonga. # You need to install pgroonga and configure it as a PostgreSQL extension. # In addition to the above, you need to create a pgroonga index on the text column of the note table. # see: https://pgroonga.github.io/tutorial/ # - meilisearch # Use Meilisearch. # You need to install Meilisearch and configure. provider: sqlPgroonga # For Meilisearch settings. # If you select "meilisearch" for "fulltextSearch.provider", it must be set. # You can set scope to local or global (default value) # (include notes from remote). #meilisearch: # host: meilisearch # port: 7700 # apiKey: '' # ssl: true # index: '' # scope: global # ┌───────────────┐ #───┘ ID generation └─────────────────────────────────────────── # You can select the ID generation method. # You don't usually need to change this setting, but you can # change it according to your preferences. # Available methods: # aid ... Short, Millisecond accuracy # aidx ... Millisecond accuracy # meid ... Similar to ObjectID, Millisecond accuracy # ulid ... Millisecond accuracy # objectid ... This is left for backward compatibility # ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE # ID SETTINGS AFTER THAT! id: 'aidx' # ┌────────────────┐ #───┘ Error tracking └────────────────────────────────────────── # Sentry is available for error tracking. # See the Sentry documentation for more details on options. #sentryForBackend: # enableNodeProfiling: true # options: # dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0' #sentryForFrontend: # options: # dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0' # ┌─────────────────────┐ #───┘ Other configuration └───────────────────────────────────── # Whether disable HSTS #disableHsts: true # Number of worker processes clusterLimit: 6 # Job concurrency per worker deliverJobConcurrency: 96 inboxJobConcurrency: 16 relationshipJobConcurrency: 16 # What's relationshipJob?: # Follow, unfollow, block and unblock(ings) while following-imports, etc. or account migrations. # Job rate limiter deliverJobPerSec: 96 inboxJobPerSec: 32 relationshipJobPerSec: 64 # Job attempts deliverJobMaxAttempts: 12 inboxJobMaxAttempts: 8 # Local address used for outgoing requests #outgoingAddress: 127.0.0.1 # IP address family used for outgoing request (ipv4, ipv6 or dual) outgoingAddressFamily: dual # Amount of characters that can be used when writing notes. Longer notes will be rejected. (minimum: 1) maxNoteLength: 100000 # Amount of characters that will be saved for remote notes. Longer notes will be truncated to this length. (minimum: 1) maxRemoteNoteLength: 100000 # Amount of characters that can be used when writing content warnings. Longer warnings will be rejected. (minimum: 1) maxCwLength: 5000 # Amount of characters that will be saved for remote content warnings. Longer warnings will be truncated to this length. (minimum: 1) maxRemoteCwLength: 5000 # Amount of characters that can be used when writing media descriptions (alt text). Longer descriptions will be rejected. (minimum: 1) maxAltTextLength: 100000 # Amount of characters that will be saved for remote media descriptions (alt text). Longer descriptions will be truncated to this length. (minimum: 1) maxRemoteAltTextLength: 100000 # Proxy for HTTP/HTTPS #proxy: http://127.0.0.1:3128 proxyBypassHosts: - api.deepl.com - api-free.deepl.com - www.recaptcha.net - hcaptcha.com - challenges.cloudflare.com # Proxy for SMTP/SMTPS #proxySmtp: http://127.0.0.1:3128 # use HTTP/1.1 CONNECT #proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4 #proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5 # Media Proxy #mediaProxy: https://booping.synth.download/proxy # Proxy remote files (default: true) # Proxy remote files by this instance or mediaProxy to prevent remote files from running in remote domains. proxyRemoteFiles: true # Movie Thumbnail Generation URL # There is no reference implementation. # For example, Misskey will point to the following URL: # https://example.com/thumbnail.webp?thumbnail=1&url=https%3A%2F%2Fstorage.example.com%2Fpath%2Fto%2Fvideo.mp4 #videoThumbnailGenerator: https://booping.synth.download # Sign outgoing ActivityPub GET request (default: true) signToActivityPubGet: true # Sign outgoing ActivityPub Activities (default: true) # Linked Data signatures are cryptographic signatures attached to each activity to provide proof of authenticity. # When using authorized fetch, this is often undesired as any signed activity can be forwarded to a blocked instance by relays and other instances. # This setting allows admins to disable LD signatures for increased privacy, at the expense of fewer relayed activities and additional inbound fetch (GET) requests. attachLdSignatureForRelays: true # For security reasons, uploading attachments from the intranet is prohibited, # but exceptions can be made from the following settings. Default value is "undefined". # Read changelog to learn more (Improvements of 12.90.0 (2021/09/04)). #allowedPrivateNetworks: [ # '127.0.0.1/32' #] customMOTD: [ '“Heartfelt apology”', '[Insert debit or credit card to purchase infinite lives.]', '[Space] Say Apple', 'Fun Fact: Booping Synths was originally made with', 'Tip: Whenever freezing, opening any Misskey-based instance on a laptop is a great heat source. Does not apply to Iceshrimp.NET instances.', '* It''s locked.', 'cd /srv/docker/sharkey && docker compose pull && docker compose down && docker compose up -d', '', '', '', '', '', '', '', 'Also check out chitter.xyz!', 'Also check out critter.cafe!', 'Also check out critters.gay!', 'Also check out lethallava.land!', 'Also check out remlit.site!', 'Also check out wetdry.world!', 'Also check out yeen.town!', 'Ants.', 'aren''t you supposed to be eating cardboard?', 'Attach a bee to your post? (Y/N)', 'Beeeeep?', 'BEEP BEEP BEEP BEEP BEEP', 'Beep!', 'Booping.Synth.Download will now swap to using Safety Scissors. Please.', 'bossfight ', 'brush your teeth and try again later', 'can you watch my shoes for a bit, they''re entertaining', 'Controller 2 disconnected. Please reconnect to resume gameplay.', 'Dinosaurs!?', 'dude can you tie my shoes im bored', 'Find my glasses to receive a prize!', 'Give it a moment I just ran systemctl reboot', 'Go into your [I]nventory screen to view your items. If you want to, anyways...', 'hello_world', 'HOW THE FU', 'I bet you could be a baggage claim if you tried hard enough', 'i love my kitchen appliance', 'I''m afraid.', 'its okay to sin if its funny. probably', 'just did systemctl reload caddy', 'loading canceled. bitch', 'Loading Firefish v1.0.5-rc', 'Loading Lockpick', 'Loading Mastodon v4.3.3', 'look into my eyes and tell me about your hyperfixation', 'Merp!', 'Mrrrrrrr...', 'Mrrrrrrrf...', 'No smoking while inside.', 'ooooOHHHH MY PCCCCCC', 'Packets are approaching your location at 299,792,458m/s', 'Peggle Dinners', 'Put your synth in airplane mode before proceeding, please.', 'Read A Book Instead?', 'Remember Greek Philosophy? Imagine what they''re up to nowadays.', 'Send me refs of your Pegglesona', 'She may have been moved or deleted.', 'Sorry', 'stop looking at me like that :\', 'stop looking at me like that >:(', 'supported by gordon freeman', 'Swap public bathrooms to private bathrooms in settings.', 'They call me the parfait :parfait_emoji:', 'throw your phone into a wall immediately', 'Use [LS] to move', 'What are you... БЛЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯТЬ', 'Where the fuck is my toaster', 'Whoops, Memory leak!', 'You''ll need to spend one HotDog to enter the chat. Are you sure you want to continue?', 'You''re going to have to speak into the void for that one.', 'You know you can suggest what appears here, right?' ] # Upload or download file size limits (bytes) # 2GB maxFileSize: 2147483648 # timeout (in milliseconds) and maximum size for imports (e.g. note imports) #import: # downloadTimeout: 30000 # maxFileSize: 262144000 # CHMod-style permission bits to apply to uploaded files. # Permission bits are specified as a base-8 string representing User/Group/Other permissions. # This setting is only useful for custom deployments, such as using a reverse proxy to serve media. #filePermissionBits: '644' # Log settings # logging: # sql: # # Outputs query parameters during SQL execution to the log. # # default: false # enableQueryParamLogging: false # # Disable query truncation. If set to true, the full text of the query will be output to the log. # # default: false # disableQueryTruncation: false # # Shows debug log messages after instance startup. To capture earlier debug logs, set the MK_VERBOSE environment variable. # # default: false in production, true otherwise. # #verbose: false # Settings for the activity logger, which records inbound activities to the database. # Disabled by default due to the large volume of data it saves. #activityLogging: # Log activities to the database (default: false) #enabled: false # Save the activity before processing, then update later with the results. # This has the advantage of capturing activities that cause a hard-crash, but doubles the number of queries used. # Default: false #preSave: false # How long to save each log entry before deleting it. # Default: 2592000000 (1 week) #maxAge: 2592000000 # Transparently compress every websocket message on clients that support it. # Trades server CPU usage for reduced bandwidth usage and a faster frontend on the client. # If you're not using jemalloc, this may cause memory fragmentation and performance issues! (https://www.npmjs.com/package/ws#websocket-compression) # jemalloc is used by default in the Sharkey Docker image and may be set up manually otherwise: https://github.com/jemalloc/jemalloc/wiki/getting-started websocketCompression: true # Inject arbitrary HTML tags to customize Sharkey without having to fork it customHtml: head: |