From 026dafe9123987ec254e0c330f26bf9829192083 Mon Sep 17 00:00:00 2001 From: Ash Furrow Date: Tue, 4 Apr 2017 21:35:45 -0400 Subject: [PATCH 01/34] Adds mastodon.technology --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0cd3f18d67..dbed118425 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -40,5 +40,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.nasqueron.org](https://social.nasqueron.org) |Dreamers, open source developers, free culture|Yes|Yes| | [status.dissidence.ovh](https://status.dissidence.ovh)|N/A|Yes|Yes| | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| +| [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 413d87cd505d8c5258bd8b000b99228c76b7ec6e Mon Sep 17 00:00:00 2001 From: Jason Snell Date: Tue, 4 Apr 2017 18:43:21 -0700 Subject: [PATCH 02/34] SSL best practices for nginx --- docs/Running-Mastodon/Production-guide.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index b1f7bd35b9..d539ddf644 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -11,10 +11,22 @@ map $http_upgrade $connection_upgrade { '' close; } +server { + listen 80; + listen [::]:80; + server_name example.com; + return 301 https://$host$request_uri; +} + server { listen 443 ssl; server_name example.com; + ssl_protocols TLSv1.2; + ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; + ssl_prefer_server_ciphers on; + ssl_session_cache shared:SSL:10m; + ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; From b6a6a0d3d9dedd68512ea8f9d69c11b581fea224 Mon Sep 17 00:00:00 2001 From: shel Date: Tue, 4 Apr 2017 21:47:13 -0400 Subject: [PATCH 03/34] Corrected misinformation regarding Direct Posts Unless something changed recently I have no clue why this said that direct posts do not federate because they do. --- docs/Using-Mastodon/User-guide.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Using-Mastodon/User-guide.md b/docs/Using-Mastodon/User-guide.md index f8018909aa..acd02f24e9 100644 --- a/docs/Using-Mastodon/User-guide.md +++ b/docs/Using-Mastodon/User-guide.md @@ -160,13 +160,13 @@ Toot privacy is handled independently of account privacy, and individually for e **Unlisted** toots are toggled with the "Do not display in public timeline" option in the Compose pane. They are visible to anyone following you and appear on your profile page to the public even without a Mastodon login, but do *not* appear to anyone viewing the Public Timeline while logged into Mastodon. -**Private** toots, finally, are toggled with the "Mark as private" switch. Private toots do not appear in the public timeline nor on your profile page to anyone viewing it unless they are on your Followers list. This means the option is of very limited use if your account is not also set to be private (as anyone can follow you without confirmation and thus see your private toots). However the separation of this means that if you *do* set your entire account to private, you can switch this option off on a toot to make unlisted or even public toots from your otherwise private account. +**Private** toots, finally, are toggled with the "Mark as private" switch. Private toots do not appear in the public timeline nor on your profile page to anyone viewing it unless they are on your Followers list. This means the option is of very limited use if your account is not also set to be private (as anyone can follow you without confirmation and thus see your private toots). However the separation of this means that if you *do* set your entire account to private, you can switch this option off on a toot to make unlisted or even public toots from your otherwise private account. Private posts are not encrypted. Make sure you trust your instance admin not to just read your private posts on the back-end. Private toots do not federate to other instances, unless you @mention a remote user. In this case, they will federate to their instance *and may appear there PUBLICLY*. A warning will be displayed if you're composing a private toot that will federate to another instance. Private toots cannot be boosted. If someone you follow makes a private toot, it will appear in your timeline with a padlock icon in place of the Boost icon. **NOTE** that remote instances may not respect this. -**Direct** messages are only visible to users you have @mentioned in them. This does *not* federate to protect your privacy (as other instances may ignore the "Direct" status and display the messages as public if they were to receive them), even if you have @mentioned a remote user. +**Direct** posts are only visible to users you have @mentioned in them and cannot be boosted. Like with private posts, you should be mindful that the remote instance may not respect this protocol. If you are discussing a sensitive matter you should move the conversation off of Mastodon. To summarise: @@ -175,7 +175,7 @@ Toot Privacy | Visible on Profile | Visible on Public Timeline | Federates to ot Public | Anyone incl. anonymous viewers | Yes | Yes Unlisted | Anyone incl. anonymous viewers | No | Yes Private | Followers only | No | Only remote @mentions -Direct | No | No | No +Direct | No | No | Only remote @mentions #### Blocking From 192f855952df6e5b39af770331b7c8c8cefd13b9 Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 21:14:37 -0700 Subject: [PATCH 04/34] We're going to want these nice helper methods, lets share them with a parent class that matches Rails 5 practices (application level abstraction) --- app/workers/application_worker.rb | 5 +++++ app/workers/distribution_worker.rb | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 app/workers/application_worker.rb diff --git a/app/workers/application_worker.rb b/app/workers/application_worker.rb new file mode 100644 index 0000000000..f2d7c10622 --- /dev/null +++ b/app/workers/application_worker.rb @@ -0,0 +1,5 @@ +class ApplicationWorker + def info(message) + Rails.logger.info("#{self.class.name} - #{message}") + end +end diff --git a/app/workers/distribution_worker.rb b/app/workers/distribution_worker.rb index f4e738d804..9a2867ea66 100644 --- a/app/workers/distribution_worker.rb +++ b/app/workers/distribution_worker.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class DistributionWorker +class DistributionWorker < ApplicationWorker include Sidekiq::Worker def perform(status_id) @@ -9,6 +9,6 @@ class DistributionWorker FanOutOnWriteService.new.call(status) WarmCacheService.new.call(status) rescue ActiveRecord::RecordNotFound - true + info("Couldn't find the status") end end From 940dedab78077bd7722c8e23df974a496a64cda9 Mon Sep 17 00:00:00 2001 From: scriptjunkie Date: Tue, 4 Apr 2017 23:21:00 -0500 Subject: [PATCH 05/34] Add https://securitymastod.one/ --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0cd3f18d67..6b6eda74cd 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -6,6 +6,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | Name | Theme/Notes, if applicable | Open Registrations | IPv6 | | -------------|-------------|---|---| | [mastodon.social](https://mastodon.social) |Flagship, quick updates|Yes|No| +| [securitymastod.one](https://securitymastod.one/) |Information security enthusiasts and pros|Yes|Yes| | [awoo.space](https://awoo.space) |Intentionally moderated, only federates with mastodon.social|Yes|No| | [animalliberation.social](https://animalliberation.social) |Animal Rights|Yes|No| | [socially.constructed.space](https://socially.constructed.space) |Single user|No|No| From b2c43bcdf015742eaa8a6bbefd334c131edb7fbd Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Tue, 4 Apr 2017 21:31:02 -0700 Subject: [PATCH 06/34] Mastodon isn't using jbuilder or sdoc, and it prevents an upgrade to 2.4.0 --- Gemfile | 2 -- Gemfile.lock | 11 ----------- 2 files changed, 13 deletions(-) diff --git a/Gemfile b/Gemfile index 4e7ff6621d..b5705e9d19 100644 --- a/Gemfile +++ b/Gemfile @@ -8,8 +8,6 @@ gem 'sass-rails', '~> 5.0' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.1.0' gem 'jquery-rails' -gem 'jbuilder', '~> 2.0' -gem 'sdoc', '~> 0.4.0', group: :doc gem 'puma' gem 'hamlit-rails' diff --git a/Gemfile.lock b/Gemfile.lock index a774a89bab..408d85ade1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -198,9 +198,6 @@ GEM parser (>= 2.2.3.0) term-ansicolor (>= 1.3.2) terminal-table (>= 1.5.1) - jbuilder (2.6.0) - activesupport (>= 3.0.0, < 5.1) - multi_json (~> 1.2) jmespath (1.3.1) jquery-rails (4.1.1) rails-dom-testing (>= 1, < 3) @@ -231,7 +228,6 @@ GEM mimemagic (0.3.2) mini_portile2 (2.1.0) minitest (5.10.1) - multi_json (1.12.1) net-scp (1.2.1) net-ssh (>= 2.6.5) net-ssh (4.0.1) @@ -310,8 +306,6 @@ GEM thor (>= 0.18.1, < 2.0) rainbow (2.1.0) rake (12.0.0) - rdoc (4.2.2) - json (~> 1.4) react-rails (1.10.0) babel-transpiler (>= 0.7.0) coffee-script-source (~> 1.8) @@ -381,9 +375,6 @@ GEM sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - sdoc (0.4.1) - json (~> 1.7, >= 1.7.7) - rdoc (~> 4.0) sidekiq (4.2.7) concurrent-ruby (~> 1.0) connection_pool (~> 2.2, >= 2.2.0) @@ -483,7 +474,6 @@ DEPENDENCIES http httplog i18n-tasks (~> 0.9.6) - jbuilder (~> 2.0) jquery-rails letter_opener letter_opener_web @@ -514,7 +504,6 @@ DEPENDENCIES rubocop ruby-oembed sass-rails (~> 5.0) - sdoc (~> 0.4.0) sidekiq sidekiq-unique-jobs simple-navigation From 628dfbb3638d56cd54981ee4fb2d523a5b1afb33 Mon Sep 17 00:00:00 2001 From: Ian McDowell Date: Tue, 4 Apr 2017 23:43:57 -0500 Subject: [PATCH 07/34] Update List-of-Mastodon-instances.md Added mastodon.network. --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0cd3f18d67..8b8aba1240 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -6,6 +6,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | Name | Theme/Notes, if applicable | Open Registrations | IPv6 | | -------------|-------------|---|---| | [mastodon.social](https://mastodon.social) |Flagship, quick updates|Yes|No| +| [mastodon.network](https://mastodon.network) |N/A|Yes|Yes| | [awoo.space](https://awoo.space) |Intentionally moderated, only federates with mastodon.social|Yes|No| | [animalliberation.social](https://animalliberation.social) |Animal Rights|Yes|No| | [socially.constructed.space](https://socially.constructed.space) |Single user|No|No| From 522410589e85957adf9c359ac04bf3fb9cf0667f Mon Sep 17 00:00:00 2001 From: Brad Urani Date: Wed, 5 Apr 2017 06:02:58 +0000 Subject: [PATCH 08/34] Eliminate unnecessary queries and query clauses with none and all --- app/models/status.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/status.rb b/app/models/status.rb index daf1285720..6948ad77c2 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -161,9 +161,9 @@ class Status < ApplicationRecord return where.not(visibility: [:private, :direct]) if account.nil? if target_account.blocking?(account) # get rid of blocked peeps - where('1 = 0') + none elsif account.id == target_account.id # author can see own stuff - where('1 = 1') + all elsif account.following?(target_account) # followers can see followers-only stuff, but also things they are mentioned in joins('LEFT OUTER JOIN mentions ON statuses.id = mentions.status_id AND mentions.account_id = ' + account.id.to_s) .where('statuses.visibility != ? OR mentions.id IS NOT NULL', Status.visibilities[:direct]) From b97a8236fb92411b2436972b8ec4b11c03d847f3 Mon Sep 17 00:00:00 2001 From: JantsoP Date: Wed, 5 Apr 2017 09:51:35 +0200 Subject: [PATCH 09/34] updated reblog translation --- config/locales/simple_form.fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 02943cea30..684cbe39ce 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -38,7 +38,7 @@ fi: follow: Lähetä s-posti kun joku seuraa sinua follow_request: Lähetä s-posti kun joku pyytää seurata sinua mention: Lähetä s-posti kun joku mainitsee sinut - reblog: Lähetä s-posti kun joku uudestaanblogaa julkaisusi + reblog: Lähetä s-posti kun joku reblogaa julkaisusi 'no': 'Ei' required: mark: "*" From 7ea7713997217685ebeae65cfab91692df9aa1b8 Mon Sep 17 00:00:00 2001 From: JantsoP Date: Wed, 5 Apr 2017 09:52:31 +0200 Subject: [PATCH 10/34] udpdated display_name translation --- config/locales/simple_form.fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 684cbe39ce..7e1205fdc3 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -17,7 +17,7 @@ fi: confirm_password: Varmista salasana current_password: Nykyinen salasana data: Data - display_name: Näyttö nimi + display_name: Näykyvä nimi email: Sähköpostiosoite header: Header locale: Kieli From 6a33b51fd2c90e2f329ac9961b05ed97717a539f Mon Sep 17 00:00:00 2001 From: JantsoP Date: Wed, 5 Apr 2017 09:56:10 +0200 Subject: [PATCH 11/34] updated translation Updated some translations after seeing them in service. Should be better now --- app/assets/javascripts/components/locales/fi.jsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/components/locales/fi.jsx b/app/assets/javascripts/components/locales/fi.jsx index 7b151d6f83..b3ae4bc569 100644 --- a/app/assets/javascripts/components/locales/fi.jsx +++ b/app/assets/javascripts/components/locales/fi.jsx @@ -5,9 +5,9 @@ const fi = { "status.mention": "Mainitse @{name}", "status.delete": "Poista", "status.reply": "Vastaa", - "status.reblog": "Boostaa", + "status.reblog": "Buustaa", "status.favourite": "Tykkää", - "status.reblogged_by": "{name} boostattu", + "status.reblogged_by": "{name} buustasi", "status.sensitive_warning": "Arkaluontoista sisältöä", "status.sensitive_toggle": "Klikkaa nähdäksesi", "video_player.toggle_sound": "Äänet päälle/pois", @@ -28,7 +28,7 @@ const fi = { "getting_started.open_source_notice": "Mastodon Mastodon on avoimen lähdekoodin ohjelma. Voit avustaa tai raportoida ongelmia GitHub palvelussa {github}. {apps}.", "column.home": "Koti", "column.community": "Paikallinen aikajana", - "column.public": "Yhdistetty aikajana", + "column.public": "Yleinen aikajana", "column.notifications": "Ilmoitukset", "tabs_bar.compose": "Luo", "tabs_bar.home": "Koti", @@ -41,7 +41,7 @@ const fi = { "compose_form.spoiler": "Piiloita teksti varoituksen taakse", "compose_form.private": "Merkitse yksityiseksi", "compose_form.privacy_disclaimer": "Sinun yksityinen status toimitetaan mainitsemallesi käyttäjille domaineissa {domains}. Luotatko {domainsCount, plural, one {tähän palvelimeen} other {näihin palvelimiin}}? Postauksen yksityisyys toimii van Mastodon palvelimilla. Jos {domains} {domainsCount, plural, one {ei ole Mastodon palvelin} other {eivät ole Mastodon palvelin}}, viestiin ei tule Yksityinen-merkintää, ja sitä voidaan boostata tai muuten tehdä näkyväksi muille vastaanottajille.", - "compose_form.unlisted": "Älä näytä julkisilla aikajanoilla", + "compose_form.unlisted": "Älä näytä yleisillä aikajanoilla", "navigation_bar.edit_profile": "Muokkaa profiilia", "navigation_bar.preferences": "Ominaisuudet", "navigation_bar.community_timeline": "Paikallinen aikajana", @@ -55,14 +55,14 @@ const fi = { "upload_form.undo": "Peru", "notification.follow": "{name} seurasi sinua", "notification.favourite": "{name} tykkäsi statuksestasi", - "notification.reblog": "{name} boostasi statustasi", + "notification.reblog": "{name} buustasi statustasi", "notification.mention": "{name} mainitsi sinut", "notifications.column_settings.alert": "Työpöytä ilmoitukset", "notifications.column_settings.show": "Näytä sarakkeessa", "notifications.column_settings.follow": "Uusia seuraajia:", "notifications.column_settings.favourite": "Tykkäyksiä:", "notifications.column_settings.mention": "Mainintoja:", - "notifications.column_settings.reblog": "Boosteja:", + "notifications.column_settings.reblog": "Buusteja:", }; export default fi; From c33a8ce307e0e7b25d59c24f1ee7810b0d24c8ad Mon Sep 17 00:00:00 2001 From: JantsoP Date: Wed, 5 Apr 2017 09:57:25 +0200 Subject: [PATCH 12/34] updated reblog to boost translation Since it is that :D --- config/locales/simple_form.fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 7e1205fdc3..2bacd6d2c8 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -38,7 +38,7 @@ fi: follow: Lähetä s-posti kun joku seuraa sinua follow_request: Lähetä s-posti kun joku pyytää seurata sinua mention: Lähetä s-posti kun joku mainitsee sinut - reblog: Lähetä s-posti kun joku reblogaa julkaisusi + reblog: Lähetä s-posti kun joku buustaa julkaisusi 'no': 'Ei' required: mark: "*" From 1f7dccf535cff587883470e52800a251cfbd3af3 Mon Sep 17 00:00:00 2001 From: Eugen Date: Wed, 5 Apr 2017 10:25:05 +0200 Subject: [PATCH 13/34] Fix API method URL typo --- docs/Using-the-API/API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-the-API/API.md b/docs/Using-the-API/API.md index bc5ca3de4c..e09d8ac9c9 100644 --- a/docs/Using-the-API/API.md +++ b/docs/Using-the-API/API.md @@ -310,7 +310,7 @@ Returns a [Status](#status). #### Getting status context: - GET /api/v1/statuses/:id/contexts + GET /api/v1/statuses/:id/context Returns a [Context](#context). From 53a01b38b289c2b8347473857acaf8df5ca8f81d Mon Sep 17 00:00:00 2001 From: Angristan Date: Wed, 5 Apr 2017 10:44:08 +0200 Subject: [PATCH 14/34] ECDH only Disable DHE ciphers. We don't loose any compatibility as we already use TLS 1.2, and ECDH is faster and safer. Also, it's better so specify the curve. This is the conf I use here : https://tls.imirhil.fr/https/mstdn.io --- docs/Running-Mastodon/Production-guide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index d539ddf644..3912fd2ba7 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -23,7 +23,8 @@ server { server_name example.com; ssl_protocols TLSv1.2; - ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; + ssl_ciphers EECDH+AESGCM:EECDH+AES; + ssl_ecdh_curve secp384r1; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; From 3a98afd3e97413972c734184d3574f5511d4b95e Mon Sep 17 00:00:00 2001 From: Jordan Guerder Date: Wed, 5 Apr 2017 10:52:56 +0200 Subject: [PATCH 15/34] Added mastodon.cx --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index d0bcf8c7dc..e726e5dcd0 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -7,6 +7,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | -------------|-------------|---|---| | [mastodon.social](https://mastodon.social) |Flagship, quick updates|No|No| | [securitymastod.one](https://securitymastod.one/) |Information security enthusiasts and pros|Yes|Yes| +| [mastodon.cx](https://mastodon.cx/) |Alternative Mastodon instance hosted in France|Yes|Yes| | [mastodon.network](https://mastodon.network) |N/A|Yes|Yes| | [awoo.space](https://awoo.space) |Intentionally moderated, only federates with mastodon.social|Yes|No| | [animalliberation.social](https://animalliberation.social) |Animal Rights|Yes|No| From 17fb783672651d48e237757fe634004f23180a4d Mon Sep 17 00:00:00 2001 From: Angristan Date: Wed, 5 Apr 2017 11:16:56 +0200 Subject: [PATCH 16/34] Add mstdn.io --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index d0bcf8c7dc..a23cdafde8 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -21,6 +21,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [mastodon.xyz](https://mastodon.xyz) |N/A|Yes|Yes| | [social.targaryen.house](https://social.targaryen.house) |Federates everywhere, quick updates.|Yes|Yes| | [masto.themimitoof.fr](https://masto.themimitoof.fr) |N/A|Yes|Yes| +| [mstdn.io](https://mstdn.io) |N/A|Yes|Yes| | [social.imirhil.fr](https://social.imirhil.fr) |N/A|No|Yes| | [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, federates everywhere, no moderation yet|Yes|Yes| | [octodon.social](https://octodon.social) |Open registrations, federates everywhere, cutest instance yet|Yes|Yes| From 9e06446d65944479614440704984d7c49bf8c97b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Levieux?= Date: Wed, 5 Apr 2017 11:24:21 +0200 Subject: [PATCH 17/34] Add mastodon.partipirate.org --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index d0bcf8c7dc..0b1720e116 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -19,6 +19,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.diskseven.com](https://social.diskseven.com) |Single user|No|Yes| | [social.gestaltzerfall.net](https://social.gestaltzerfall.net) |Single user|No|No| | [mastodon.xyz](https://mastodon.xyz) |N/A|Yes|Yes| +| [mastodon.partipirate.org](https://mastodon.partipirate.org) |French Pirate Part Instance - Politics and stuff|Yes|No| | [social.targaryen.house](https://social.targaryen.house) |Federates everywhere, quick updates.|Yes|Yes| | [masto.themimitoof.fr](https://masto.themimitoof.fr) |N/A|Yes|Yes| | [social.imirhil.fr](https://social.imirhil.fr) |N/A|No|Yes| From 6ea25d695acf5f6bfde6b9be0d1d2b82565a25ca Mon Sep 17 00:00:00 2001 From: nicobz25 Date: Wed, 5 Apr 2017 13:13:09 +0200 Subject: [PATCH 18/34] Update List-of-Mastodon-instances.md Add our mastodon instance :) Thanks ! --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0b98f8552e..bf770dc43f 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -46,5 +46,6 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [status.dissidence.ovh](https://status.dissidence.ovh)|N/A|Yes|Yes| | [mastodon.cc](https://mastodon.cc)|Art|Yes|No| | [mastodon.technology](https://mastodon.technology)|Open registrations, federates everywhere, for tech folks|Yes|No| +| [mastodon.systemlab.fr](https://mastodon.systemlab.fr/)|Le mastodon Français, informatique, jeux-vidéos, gaming et hébergement.|Yes|No| Let me know if you start running one so I can add it to the list! (Alternatively, add it yourself as a pull request). From 06d3e7dbbacd5f1c0206d71cd0b95665bd0f486d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Levieux?= Date: Wed, 5 Apr 2017 13:19:34 +0200 Subject: [PATCH 19/34] Typography on partY --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0b98f8552e..435e51411a 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -20,7 +20,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.diskseven.com](https://social.diskseven.com) |Single user|No|Yes| | [social.gestaltzerfall.net](https://social.gestaltzerfall.net) |Single user|No|No| | [mastodon.xyz](https://mastodon.xyz) |N/A|Yes|Yes| -| [mastodon.partipirate.org](https://mastodon.partipirate.org) |French Pirate Part Instance - Politics and stuff|Yes|No| +| [mastodon.partipirate.org](https://mastodon.partipirate.org) |French Pirate Party Instance - Politics and stuff|Yes|No| | [social.targaryen.house](https://social.targaryen.house) |Federates everywhere, quick updates.|Yes|Yes| | [masto.themimitoof.fr](https://masto.themimitoof.fr) |N/A|Yes|Yes| | [mstdn.io](https://mstdn.io) |N/A|Yes|Yes| From 3cc7378924add2241c7fe8c106747e0206640a4b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 13:28:46 +0200 Subject: [PATCH 20/34] Replace ActionCable broadcast call with simple redis publish --- app/lib/feed_manager.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 2cca1cefe4..88f6f4a468 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -39,7 +39,7 @@ class FeedManager def broadcast(timeline_id, options = {}) options[:queued_at] = (Time.now.to_f * 1000.0).to_i - ActionCable.server.broadcast("timeline:#{timeline_id}", options) + redis.publish("timeline:#{timeline_id}", Oj.dump(options)) end def trim(type, account_id) From 6687c4a114e66cf6f63e1eff856700a19bbba9bd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 13:32:57 +0200 Subject: [PATCH 21/34] Add index on mentions status_id --- db/migrate/20170405112956_add_index_on_mentions_status_id.rb | 5 +++++ db/schema.rb | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20170405112956_add_index_on_mentions_status_id.rb diff --git a/db/migrate/20170405112956_add_index_on_mentions_status_id.rb b/db/migrate/20170405112956_add_index_on_mentions_status_id.rb new file mode 100644 index 0000000000..3ed1a20cff --- /dev/null +++ b/db/migrate/20170405112956_add_index_on_mentions_status_id.rb @@ -0,0 +1,5 @@ +class AddIndexOnMentionsStatusId < ActiveRecord::Migration[5.0] + def change + add_index :mentions, :status_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 3aaa3e3ad7..b5d55fa16e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170403172249) do +ActiveRecord::Schema.define(version: 20170405112956) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -127,6 +127,7 @@ ActiveRecord::Schema.define(version: 20170403172249) do t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["account_id", "status_id"], name: "index_mentions_on_account_id_and_status_id", unique: true, using: :btree + t.index ["status_id"], name: "index_mentions_on_status_id", using: :btree end create_table "mutes", force: :cascade do |t| From 05eba582ef02d1d2b638fe795a5fa69555842efe Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 13:45:03 +0200 Subject: [PATCH 22/34] Add scalingo support --- .buildpacks | 2 ++ scalingo.json | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 .buildpacks create mode 100644 scalingo.json diff --git a/.buildpacks b/.buildpacks new file mode 100644 index 0000000000..29d7ee1e9b --- /dev/null +++ b/.buildpacks @@ -0,0 +1,2 @@ +https://github.com/Scalingo/ruby-buildpack +https://github.com/Scalingo/nodejs-buildpack diff --git a/scalingo.json b/scalingo.json new file mode 100644 index 0000000000..84b690e245 --- /dev/null +++ b/scalingo.json @@ -0,0 +1,87 @@ +{ + "name": "Mastodon", + "description": "A GNU Social-compatible microblogging server", + "repository": "https://github.com/johnsudaar/mastodon", + "logo": "https://github.com/tootsuite/mastodon/raw/master/app/assets/images/logo.png", + "env": { + "LOCAL_DOMAIN": { + "description": "The domain that your Mastodon instance will run on (this can be appname.scalingo.io or a custom domain)", + "required": true + }, + "LOCAL_HTTPS": { + "description": "Will your domain support HTTPS? (Automatic for *.scalingo.io, requires manual configuration for custom domains)", + "value": "true", + "required": true + }, + "PAPERCLIP_SECRET": { + "description": "The secret key for storing media files", + "generator": "secret" + }, + "SECRET_KEY_BASE": { + "description": "The secret key base", + "generator": "secret" + }, + "SINGLE_USER_MODE": { + "description": "Should the instance run in single user mode? (Disable registrations, redirect to front page)", + "value": "false", + "required": true + }, + "S3_ENABLED": { + "description": "Should Mastodon use Amazon S3 for storage? This is highly recommended, as Scalingo does not have persistent file storage (files will be lost).", + "value": "true", + "required": false + }, + "S3_BUCKET": { + "description": "Amazon S3 Bucket", + "required": false + }, + "S3_REGION": { + "description": "Amazon S3 region that the bucket is located in", + "required": false + }, + "AWS_ACCESS_KEY_ID": { + "description": "Amazon S3 Access Key", + "required": false + }, + "AWS_SECRET_ACCESS_KEY": { + "description": "Amazon S3 Secret Key", + "required": false + }, + "SMTP_SERVER": { + "description": "Hostname for SMTP server, if you want to enable email", + "required": false + }, + "SMTP_PORT": { + "description": "Port for SMTP server", + "required": false + }, + "SMTP_LOGIN": { + "description": "Username for SMTP server", + "required": false + }, + "SMTP_PASSWORD": { + "description": "Password for SMTP server", + "required": false + }, + "SMTP_DOMAIN": { + "description": "Domain for SMTP server. Will default to instance domain if blank.", + "required": false + }, + "SMTP_FROM_ADDRESS": { + "description": "Address to send emails from", + "required": false + }, + "BUILDPACK_URL": { + "description": "Internal scalingo configuration", + "required": true, + "value": "https://github.com/Scalingo/multi-buildpack.git" + } + }, + "scripts": { + "postdeploy": "bundle exec rails db:migrate && bundle exec rails db:seed" + }, + "addons": [ + "scalingo-postgresql", + "scalingo-redis" + ] +} From f3cc1e4416e2592cef3e353fdc92a1bfce7351e4 Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 13:53:30 +0200 Subject: [PATCH 23/34] Install nodejs before ruby --- .buildpacks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildpacks b/.buildpacks index 29d7ee1e9b..d295b0f5d6 100644 --- a/.buildpacks +++ b/.buildpacks @@ -1,2 +1,2 @@ -https://github.com/Scalingo/ruby-buildpack https://github.com/Scalingo/nodejs-buildpack +https://github.com/Scalingo/ruby-buildpack From 0bd1bdfc446216d1940bd32d1008ad34f22cce83 Mon Sep 17 00:00:00 2001 From: Angristan Date: Wed, 5 Apr 2017 14:11:08 +0200 Subject: [PATCH 24/34] Add git and curl as dependencies In some VPS templates, they are not installed by default. --- docs/Running-Mastodon/Production-guide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Running-Mastodon/Production-guide.md b/docs/Running-Mastodon/Production-guide.md index 3912fd2ba7..90e9c0dea1 100644 --- a/docs/Running-Mastodon/Production-guide.md +++ b/docs/Running-Mastodon/Production-guide.md @@ -88,8 +88,9 @@ It is recommended to create a special user for mastodon on the server (you could ## General dependencies + sudo apt-get install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev nodejs file git curl curl -sL https://deb.nodesource.com/setup_4.x | sudo bash - - sudo apt-get install imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev nodejs file + apt-get intall nodejs sudo npm install -g yarn ## Redis From 37bd8d45ed5d0f20e7b8f9cabac75af844566666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?wxcaf=C3=A9?= Date: Wed, 5 Apr 2017 14:21:45 +0200 Subject: [PATCH 25/34] Update List-of-Mastodon-instances.md --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index 0b98f8552e..07a6a48139 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -25,7 +25,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [masto.themimitoof.fr](https://masto.themimitoof.fr) |N/A|Yes|Yes| | [mstdn.io](https://mstdn.io) |N/A|Yes|Yes| | [social.imirhil.fr](https://social.imirhil.fr) |N/A|No|Yes| -| [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, federates everywhere, no moderation yet|Yes|Yes| +| [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, queer people, activists, safe as much as possible |Yes|Yes| | [octodon.social](https://octodon.social) |Open registrations, federates everywhere, cutest instance yet|Yes|Yes| | [mastodon.club](https://mastodon.club)|Open Registration, Open Federation, Mostly Canadians|Yes|No| | [hostux.social](https://hostux.social) |N/A|Yes|Yes| From 8f38353c4d146b7d7a9d971ad02e8e6fca302bb8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Apr 2017 14:26:17 +0200 Subject: [PATCH 26/34] Only render public payload once in FanOutOnWrite --- app/services/fan_out_on_write_service.rb | 17 +++++++++-------- .../after_remote_follow_request_worker.rb | 2 ++ app/workers/after_remote_follow_worker.rb | 2 ++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 42222c25b2..106d257baf 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -16,6 +16,7 @@ class FanOutOnWriteService < BaseService return if status.account.silenced? || !status.public_visibility? || status.reblog? + render_anonymous_payload(status) deliver_to_hashtags(status) return if status.reply? && status.in_reply_to_account_id != status.account_id @@ -48,23 +49,23 @@ class FanOutOnWriteService < BaseService end end + def render_anonymous_payload(status) + @payload = FeedManager.instance.inline_render(nil, 'api/v1/statuses/show', status) + end + def deliver_to_hashtags(status) Rails.logger.debug "Delivering status #{status.id} to hashtags" - payload = FeedManager.instance.inline_render(nil, 'api/v1/statuses/show', status) - status.tags.pluck(:name).each do |hashtag| - FeedManager.instance.broadcast("hashtag:#{hashtag}", event: 'update', payload: payload) - FeedManager.instance.broadcast("hashtag:#{hashtag}:local", event: 'update', payload: payload) if status.account.local? + FeedManager.instance.broadcast("hashtag:#{hashtag}", event: 'update', payload: @payload) + FeedManager.instance.broadcast("hashtag:#{hashtag}:local", event: 'update', payload: @payload) if status.account.local? end end def deliver_to_public(status) Rails.logger.debug "Delivering status #{status.id} to public timeline" - payload = FeedManager.instance.inline_render(nil, 'api/v1/statuses/show', status) - - FeedManager.instance.broadcast(:public, event: 'update', payload: payload) - FeedManager.instance.broadcast('public:local', event: 'update', payload: payload) if status.account.local? + FeedManager.instance.broadcast(:public, event: 'update', payload: @payload) + FeedManager.instance.broadcast('public:local', event: 'update', payload: @payload) if status.account.local? end end diff --git a/app/workers/after_remote_follow_request_worker.rb b/app/workers/after_remote_follow_request_worker.rb index 1f2db30615..9280692112 100644 --- a/app/workers/after_remote_follow_request_worker.rb +++ b/app/workers/after_remote_follow_request_worker.rb @@ -13,5 +13,7 @@ class AfterRemoteFollowRequestWorker follow_request.destroy FollowService.new.call(follow_request.account, updated_account.acct) + rescue ActiveRecord::RecordNotFound + true end end diff --git a/app/workers/after_remote_follow_worker.rb b/app/workers/after_remote_follow_worker.rb index bdd2c2a91d..d12fa3454d 100644 --- a/app/workers/after_remote_follow_worker.rb +++ b/app/workers/after_remote_follow_worker.rb @@ -13,5 +13,7 @@ class AfterRemoteFollowWorker follow.destroy FollowService.new.call(follow.account, updated_account.acct) + rescue ActiveRecord::RecordNotFound + true end end From ffa888d59fc56d18303dae9d7853b206c258296a Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 14:13:34 +0200 Subject: [PATCH 27/34] Add node_modules and .cache to slugignore --- .slugignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .slugignore diff --git a/.slugignore b/.slugignore new file mode 100644 index 0000000000..cbf0615e76 --- /dev/null +++ b/.slugignore @@ -0,0 +1,2 @@ +node_modules/ +.cache/ From d49612327ad41664320b84fa0970a595775abe49 Mon Sep 17 00:00:00 2001 From: Jantso Porali Date: Wed, 5 Apr 2017 14:47:42 +0200 Subject: [PATCH 28/34] updated translation for about page --- config/locales/fi.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 3bcfe5c205..c2f81413a2 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -21,12 +21,12 @@ fi: features_headline: Mikä erottaa Mastodonin muista get_started: Aloita käyttö links: Linkit - other_instances: Muut palvelimet + other_instances: muuhun palvelimeen source_code: Lähdekoodi - status_count_after: statukset - status_count_before: Kuka loi + status_count_after: statusta + status_count_before: Ovat luoneet terms: Ehdot - user_count_after: käyttäjät + user_count_after: käyttäjää user_count_before: Koti käyttäjälle accounts: follow: Seuraa From 16d14e854b56e20bd87330eae3aa66c590f2d002 Mon Sep 17 00:00:00 2001 From: Jantso Porali Date: Wed, 5 Apr 2017 14:49:29 +0200 Subject: [PATCH 29/34] updated two-way auth and preferences translation --- config/locales/fi.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/fi.yml b/config/locales/fi.yml index c2f81413a2..d5dfd81839 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -132,7 +132,7 @@ fi: edit_profile: Muokkaa profiilia export: Datan vienti import: Datan tuonti - preferences: Mieltymykset + preferences: Ominaisuudet settings: Asetukset two_factor_auth: Kaksivaiheinen tunnistus statuses: @@ -154,7 +154,7 @@ fi: description_html: Jos otat käyttöön kaksivaiheisen tunnistuksen, kirjautumiseen vaaditaan puhelin, joka voi generoida tokeneita kirjautumista varten. disable: Poista käytöstä enable: Ota käyttöön - instructions_html: "Skannaa tämä QR-koodi Google Authenticator tai samanlaiseen sovellukseen puhelimellasi. Tästä hetkestä lähtien, ohjelma generoi tokenit mikä sinun tarvitsee syöttää sisäänkirjautuessa." + instructions_html: "Skannaa tämä QR-koodi Google Authenticator tai samanlaiseen sovellukseen puhelimellasi. Tästä hetkestä lähtien ohjelma generoi koodin, mikä sinun tarvitsee syöttää sisäänkirjautuessa." plaintext_secret_html: 'Plain-text secret: %{secret}' warning: Jos et juuri nyt voi konfiguroida authenticator-applikaatiota juuri nyt, sinun pitäisi klikata "Poista käytöstä" tai et voi kirjautua sisään. users: From 5c414eeb45bf87aca0c1567ccbff5d4371071825 Mon Sep 17 00:00:00 2001 From: Jantso Porali Date: Wed, 5 Apr 2017 14:53:35 +0200 Subject: [PATCH 30/34] updated blocking translation --- config/locales/fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/fi.yml b/config/locales/fi.yml index d5dfd81839..cdb2b9886a 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -89,7 +89,7 @@ fi: preface: Voit tuoda tiettyä dataa kaikista ihmisistä joita seuraat tai estät tilillesi tälle palvelimelle tiedostoista, jotka on luotu toisella palvelimella success: Datasi on onnistuneesti ladattu ja käsitellään pian types: - blocking: Esto lista + blocking: Estetyt lista following: Seuratut lista upload: Lähetä landing_strip_html: %{name} on käyttäjä domainilla %{domain}. Voit seurata tai vuorovaikuttaa heidän kanssaan jos sinulla on tili yleisessä verkossa. Jos sinulla ei ole tiliä, voit rekisteröityä täällä. From 9efa03d2beb510c3e465ae16d3d35591fe6e029b Mon Sep 17 00:00:00 2001 From: Padraig Fahy Date: Wed, 5 Apr 2017 14:00:35 +0100 Subject: [PATCH 31/34] Adding mastodon.irish --- docs/Using-Mastodon/List-of-Mastodon-instances.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Using-Mastodon/List-of-Mastodon-instances.md b/docs/Using-Mastodon/List-of-Mastodon-instances.md index a14836b80e..0972e553fd 100644 --- a/docs/Using-Mastodon/List-of-Mastodon-instances.md +++ b/docs/Using-Mastodon/List-of-Mastodon-instances.md @@ -28,6 +28,7 @@ There is also a list at [instances.mastodon.xyz](https://instances.mastodon.xyz) | [social.wxcafe.net](https://social.wxcafe.net) |Open registrations, queer people, activists, safe as much as possible |Yes|Yes| | [octodon.social](https://octodon.social) |Open registrations, federates everywhere, cutest instance yet|Yes|Yes| | [mastodon.club](https://mastodon.club)|Open Registration, Open Federation, Mostly Canadians|Yes|No| +| [mastodon.irish](https://mastodon.irish)|Open Registration|Yes|No| | [hostux.social](https://hostux.social) |N/A|Yes|Yes| | [social.alex73630.xyz](https://social.alex73630.xyz) |Francophones|Yes|Yes| | [oc.todon.fr](https://oc.todon.fr) |Modérée et principalement francophone, pas de tolérances pour misogynie/LGBTphobies/validisme/etc.|Yes|Yes| From 3c7acd0ab68f7686b1034a1f6e6f4fa0e805ee68 Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 15:26:36 +0200 Subject: [PATCH 32/34] Add Scalingo one click on readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 20499e6e3b..3827a74ab7 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,10 @@ Which will re-create the updated containers, leaving databases and data as is. D Docker is great for quickly trying out software, but it has its drawbacks too. If you prefer to run Mastodon without using Docker, refer to the [production guide](docs/Running-Mastodon/Production-guide.md) for examples, configuration and instructions. +## Deployment on Scalingo + +[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/johnsudaar/mastodon#master) + ## Deployment on Heroku (experimental) [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) From 18caabad8ad1b7afc1c5d880fbfd1711d854acca Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 15:52:06 +0200 Subject: [PATCH 33/34] Use root repository url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3827a74ab7..fde4df6bb0 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ Docker is great for quickly trying out software, but it has its drawbacks too. I ## Deployment on Scalingo -[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/johnsudaar/mastodon#master) +[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/tootsuite/mastodon#master) ## Deployment on Heroku (experimental) From 8752dc9186c2b15e7b01f27be602f3b78988d5c1 Mon Sep 17 00:00:00 2001 From: Jonathan Hurter Date: Wed, 5 Apr 2017 16:00:48 +0200 Subject: [PATCH 34/34] Add doc --- README.md | 2 ++ docs/Running-Mastodon/Scalingo-guide.md | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 docs/Running-Mastodon/Scalingo-guide.md diff --git a/README.md b/README.md index fde4df6bb0..db60b66f7e 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,8 @@ Docker is great for quickly trying out software, but it has its drawbacks too. I [![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/tootsuite/mastodon#master) +[You can view a guide for deployment on Scalingo here.](docs/Running-Mastodon/Scalingo-guide.md) + ## Deployment on Heroku (experimental) [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) diff --git a/docs/Running-Mastodon/Scalingo-guide.md b/docs/Running-Mastodon/Scalingo-guide.md new file mode 100644 index 0000000000..6552056a82 --- /dev/null +++ b/docs/Running-Mastodon/Scalingo-guide.md @@ -0,0 +1,13 @@ +Scalingo guide +============== + +[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/tootsuite/mastodon#master) + +1. Click the above button. +2. Fill in the options requested. + * You can use a .scalingo.io domain, which will be simple to set up, or you can use a custom domain. + * You will want Amazon S3 for file storage. The only exception is for development purposes, where you may not care if files are not saved. Follow a guide online for creating a free Amazon S3 bucket and Access Key, then enter the details. + * If you want your Mastodon to be able to send emails, configure SMTP settings here (or later). Consider using [Mailgun](https://mailgun.com) or similar, who offer free plans that should suit your interests. +3. Deploy! The app should be set up, with a working web interface and database. You can change settings and manage versions from the Heroku dashboard. + +You may need to use the `scalingo` CLI application to run `USERNAME=yourUsername rails mastodon:make_admin` to make yourself an admin.