Browse Source

Merge branch 'master' into patch-3

Ornithologist Coder 7 years ago
parent
commit
c57191a360

+ 526 - 28
Contributing-to-Mastodon/Sponsors.md

@@ -12,7 +12,38 @@ These people make the development of Mastodon possible through [Patreon](https:/
 * Kit Redgrave
 * Zeipher
 * Effy Elden
-* Mathew Woodyard
+* Julie Moronuki
+* Ted
+* Christoph Witzany
+* Philip James
+* David Hutchinson
+* Martin Seeger
+* James Wright
+* Jeff Elder
+* Chad Arnold
+* Jen Savage
+* Andreas Zabari
+* SDF.ORG
+* Ke_Ga
+* Leslie Pajuelo
+* Alan Rowarth
+* Chu Ka-cheong
+* Sean Linsley
+* Kotaro Kawashima
+* Jesse Thomas Alford
+* A Dark Room iOS
+* Jeremy Banks
+* Nolan Lawson
+* Gen Knoxx
+* Moritz
+* Serhii Balbieko
+* Hugo Gameiro
+* Paco Hope
+* Great Scott Gadgets
+* slipstream/RoL
+* Danny O'Brien
+* Steve Johnson
+* demon
 
 **Thank you to the following people**
 
@@ -22,7 +53,6 @@ These people make the development of Mastodon possible through [Patreon](https:/
 * Niels Abildgaard
 * Leif Halldor Asgeirsson
 * Ellen Teapot
-* Del's Doodles
 * Josef Kenny
 * Natalie Weizenbaum
 * Spex
@@ -30,46 +60,143 @@ These people make the development of Mastodon possible through [Patreon](https:/
 * Tyler Britten
 * Jess waldrip
 * Hbomb
-* Mark Wonnacott
-* Tim Ashley Jenkins
 * Yoz Grahame
 * Jonas R. E.
-* Alex May
+* Mark Wonnacott
+* Tim Ashley Jenkins
 * Austin Putman
-* Jessica Hayley
 * J. C. Holder
+* Alex May
+* Mathew Woodyard
+* halcy
+* Sammie
+* Daniel Rosenfeld
 * A shy person
 * Jeremy Penner
 * Scott Hammack
-* James Hofmann
 * Todd Monotony
 * snorpey
-* halcy
-* Ted
-* Daniel Rosenfeld
+* David Yip
 * Erin Congden
 * Kevin Grasso
 * Christina Hendricks
+* iliana weller
+* Greg Slepak
+* Kyle Bishop
 * Irene Knapp
-* David Yip
 * iris bull
 * Nicole Bacon
+* Crom
 * Brian Long
 * John Parker
 * André Koot
-* Ernest Samuel Tomlinson
-* iliana weller
-* Greg Slepak
-* Kyle Bishop
+* ティン・ルーフ
+* David Hayward
 * s a
 * Frank Meeuwsen
 * Joel
-* David Hayward
-* Sophia Park
-* Jelle
-* Syfaro
+* Emily Jordan Klassen
+* Gabriel Puliatti
+* Glenn
+* Matt Lee
+* nobody
+* Jeremy Farnum
+* Dmytro Gladkyi
+* Hideki Yamamoto
+* Emma Humphries
+* Pete Keen
+* Rufus
+* Miki Habryn
+* Danielle McLean
+* Aaron Williamson
+* JantsoP
+* DJ Sundog
+* Ed Marshall
+* Gtom
+* Lachlan Collins
+* Nemecle
+* Manesh Pillai
+* C J Silverio
+* Micah Elizabeth Scott
+* Adam
+* Ryan Sipes
+* Pierre Vanhulst
+* Paul Lindner
+* peter hessler
+* joshua anderson
+* Zac Anger
+* 3xv
+* Kevin Sonney
+* Olivia Mossberg
+* Chris Johnson
+* Johannes Barre
+* Alda
+* Jacob Helwig
+* Joe McLaughlin
+* Takopix
+* Michael Kosler
+* Michael
+* Eramdam
+* Andy Pook
+* Michel McBride-Charpentier
+* Jonathan McDowell
+* Maff
+* Keisuke Matsuura
+* Leo Laporte
+* masklayer
+* Josephine Pedersen
+* q210
+* jemus42
+* Kenneth Larsen
+* Rey Tucker
+* Andrew Banchich
+* hogee
+* Bálint Szilakszi
+* Richard Minerich
+* Christopher James Halse Rogers
+* Sajith Sasidharan
+* Jesse Vincent
+* Benjamin Sonntag
+* Matthieu Herrb
+* nikq
+* Irick Corwal
+* Nicolai Schwarz
+* Valérianne Lagrange
+* Jon
+* anon
+* Philippe Lemaire
+* outofrange
+* Ryan Prior
+* Jesse Olson
+* Sonololo
+* Lars Trieloff
+* Kenneth Ken Sugar
+* USAMI Kenta
+* Rick Byers
+* Anders Ekbom
+* Zaki
+* Brophey Wolf
+* Stolas
+* Bodil
+* Mark
+* Shinnosuke Iwaki
+* Alexander Zillion
+* Glen E. Ivey
+* James Adney
+* Paul Nathan
+* Martin Hinrichs
+* c
+* Jerry Gnarcia
+* Mykola Bilokonsky
 * Karen Cravens
 * Sonya Mann
+* Brian
+* Jelle
+* Ryan Frederick
+* Tom Harris
+* Syfaro
+* Benjamin Boyer
+* hakoai
 * Maddy T. Henry
 * Fletcher Cole
 * Arielle Grimes
@@ -83,14 +210,12 @@ These people make the development of Mastodon possible through [Patreon](https:/
 * Jim Bradfield
 * Michelle Shepardson
 * Simeon
-* Brian
 * Martin Tithonium
 * Sundi L Richard
 * BinarySplit
 * Stephan Okhuijsen
 * Tyler
 * ee
-* Hani Awni
 * Andrew Replogle
 * Andrew Shu
 * Claus Wahlers
@@ -100,16 +225,70 @@ These people make the development of Mastodon possible through [Patreon](https:/
 * Daria Ambrose
 * Sarah Ingram
 * Pablo Lopez Soriano
-* Tom Harris
+* K.G. Orphanides
+* Colin Mahns
+* Caelyn McAulay
+* Nicholas Hinds
+* AlK
+* Jay Shapiro
+* Guilhem BLANCHARD
+* Filippo Valsorda
+* The Watercolor Gallery
+* William Hopkins
+* Paul Woolcock
+* WereK
+* Garret Kelly
+* Jer Thorp
+* August Bigelow
+* James Renken
+* Jessica Stokes
+* s18alg
+* Patrick O'Doherty
+* Valentin Ouvrard
+* Matt Brabbin
+* Nathaniel Smith
+* Dave Lane
+* Justus Seifert
+* Wes
+* Wladimir
+* Jemaleddin Cole
+* François Remy
+* Mike
+* j r conlin
+* Ash Furrow
+* Les Orchard
+* Brian P.
+* Christoph Laszlo
+* Alexandre Dufournet
+* Rachel King
+* Joash Lewis
+* Tassels
+* Patrick Gibson
+* Wesley Moore
+* Zachary Spector
+* Brooke
+* Jeremy Stashewsky
+* Damien Nicolas
+* Alex
+* Crow Moore
+* Jason Rimmer
+* Chris Eppstein
+* Parker Higgins
+* Shinsaku Chikura
+* Alexander
 * Bitey Ferret
 * J. Allan Dale
 * Ickalo
-* hoodie kitten
-* ティン・ルーフ
+* Benoit Maison
+* nanoplink
+* Mathieu Chappuis
+* Chas Emerick
+* Joachim
+* Erika
 * Benjamin Beck
 * Kris Jacque
-* Shel R
 * Modern Modron
+* Alin Rautoiu
 * Mnemonic Light
 * Bryan Nguyen
 * Szmozsánszky István "Flaki"
@@ -117,18 +296,337 @@ These people make the development of Mastodon possible through [Patreon](https:/
 * Fenreliania
 * Paul Rapoport
 * Lily
-* Niklas
 * Calvin French
 * Memetic Hazard
 * Caitlin Collins
 * pixelguff
+* Emmanuel Jacobs
+* Jan-Niklas Braak
+* Nathan Howell
+* Kai Engert
+* Gergo Lippai
+* Dirk Eisenacher
+* Hiroshi Seki
+* Brent P. Newhall
+* moult
+* Nikki W
+* Peter Gravelle
+* Toot.Cat
+* Will Thompson
+* Niclas Darville
+* Aaron Brady
+* Lurene Grenier
+* Ben Hamill
+* Michael Myers
+* Dale Price
+* mkatze
+* joachim robert
+* Jack Grigg
 * Alex Dunn
 * Felix Laurie von Massenbach
 * Mike Kasprzak
+* Gareth Noyce
+* Colby Dillion
+* Bryan Mitchell
+* Sjef
+* Christine
+* Matija Han
+* gasche
+* usr_share
+* Ryan D
+* Michael Castleman
+* Jay Flaunts His Ignorance
+* Brennen Bearnes
+* petit_louis
+* Kyle Appelgate
+* Jeff
+* Algot Runeman
+* bastien pelouse
+* Katie Collmar
+* Derek Gonyeo
+* colin mitchell
+* Jonathan Doda
+* Guillaume HERVIER
+* LoovtO
+* Kengo Nakajima
+* Ashley Fisher
+* Toby Pinder
+* Muloka
+* Y G
+* Sam Thompson
+* Mark Gordon
+* Alex
+* Martin Weigert
+* pinfort
+* Tom Liesenfeld
+* Fabian Fabian
+* Oreolek
+* donnerdrummel
+* Root
 * reacocard
 * Andrea
 * J
-* Matthew Swank
-* Kev
 * belabor jaql
 * bunnyhero
+* Andrew Schmadel
+* Pierre BT
+* Stephen Burgess
+* Indi Latrani
+* MayakoLyyn
+* Christopher Armstrong
+* Keiji Matsuzaki
+* Melanie Kloes
+* neguse
+* RX14
+* Decio
+* Sean M Puckett
+* Connor Hudson
+* Joona Hoikkala
+* David Philipe Gil
+* mayoto
+* Bartleby
+* Richard Malone
+* dreid
+* Robbie Trencheny
+* Takuro Fukuda
+* Allen Baker
+* Henri Watson
+* Tab
+* Christien Rioux
+* Toby
+* Tobias Timpe
+* Jamie Bradway
+* Jean-Christophe Gatuingt
+* Claire Tolan
+* Pablo Defendini
+* Scott Moore
+* Kaylee
+* Ben Lee
+* Mel Reams
+* Supermarine Spitfire
+* Klastic
+* Matthew Cheely
+* koji narazaki
+* Soshi Tamura
+* fluffy
+* tj
+* Miguel
+* Stephen Lovell
+* Benjamin
+* Michael Sieradzki
+* RW
+* James Smith
+* Naoki Kosaka
+* westantenna
+* Iain Cheyne
+* Adrian Hon
+* Andrew Roach
+* Sean Carrick
+* Cameron Callahan
+* George Ellenburg
+* Simon Tesla
+* Harald Wagener
+* Steve Phillips
+* Jon Pincus
+* HolyGrail
+* Ira Abramov
+* Tim and Alexandra Swast
+* Richard
+* Axel Terizaki
+* Nurelin
+* Niels Bergervoet
+* Henning Krause
+* Larry Fine
+* Minivet
+* Willscire of the Many Tribes
+* Juho Makkonen
+* Bishnu Bhattacharyya
+* Krzysztof Jankowski
+* Claire
+* Caio Cesar G. Oliveira
+* Olivier Auber
+* Vancelance
+* Takahiro Fujiwara
+* simonv3
+* Nozomu Saito
+* Paul Houlihan
+* Ichigo Mayo
+* Gabriel Marcondes
+* Frederick Doe
+* Jam
+* Balthasar Glättli
+* Lanicia
+* Nicolas Blanco
+* Paul Sheprow
+* Kota Ouchi
+* Serge K. Keller ❦
+* Infocalypse
+* James Valleroy
+* Kenny K
+* Arnaud Berthomier
+* Margaret Trauth
+* George Edogawa
+* Drapher
+* Shawn
+* Raphaël Bevenot
+* Christopher Su
+* Holger Durer
+* Thomas Stojke
+* Decklin Foster
+* Julius Heyning
+* Casey Kolderup
+* Dyedgreen
+* Paul Chabane
+* Takeshi Umeda
+* Esteban Manchado Velázquez
+* Lars Kristian Høydal
+* Adam Guest
+* Jason S.
+* Michael Van Vleet
+* Chris Palmer
+* Rachel Sutton
+* Tomoya Matsuura
+* Luiz Irber
+* Roo Khan
+* Shinichi Sato
+* Paul Harvey
+* K.
+* Drew Pope
+* Cassian Lotte Lodge
+* Nitin Dahyabhai
+* Silver Nitrate Kate
+* kazuyuki
+* Angristan
+* D. Moonfire
+* Phoenix Veritas
+* Patrick L Archibald
+* Cait is making it rain slightly
+* Sud
+* Nathan Wittstock
+* VincenTimes
+* Anselm Hannemannn
+* Bryan Lunduke
+* Selena Knight
+* Tessa N
+* Felipe Martin
+* Kazunori Shinozaki
+* Jonas Wisser
+* Don Crimbchin
+* Justin Dorfman
+* ZmK
+* Katherine A Kearns
+* Shigure Yumesaki
+* Manu Quadros
+* Miroslav Bajtos
+* codechemist
+* Nicolas Grevet
+* Go Saito
+* Piers Beckley
+* Masafumi Otsune
+* Carl Friedrich Bolz
+* Jean-Philippe DUFRAIGNE
+* Stefan Hayden
+* Derek Lewis
+* Adam Dispenza
+* Lilith Saintcrow
+* Stephanie Northway
+* Spunkie
+* kanna
+* Kevin Delgado
+* Chris Sakkas
+* Christian Ternus
+* Diego Islas Ocampo - Hyuchia
+* Avi Flax
+* Fabricio C Zuardi
+* Paul Leonard
+* Max Bruckner
+* Dave Raftery
+* Firebird Fiction
+* Akira
+* Dmitri Sotnikov
+* Kate Cook
+* Bastien Remy
+* Øyvind Kolås
+* Shivian Morgan
+* Hirokazu Uzu
+* Thibaut
+* John McLaughlin
+* Emile Neuhaus
+* Loïc Guibert
+* Mark Davis
+* Pierre-Emmanuel Guerton
+* Zach Smith
+* Alice Voidstar
+* Laura Michet
+* Shelby Spees
+* Michael Brodhead
+* t3sserakt
+* Hugo Müller-Downing
+* Mattias
+* Phil Nelson
+* LJ
+* Braxton Fair
+* Warren
+* Andy
+* Arno Rieux
+* Florian Posdziech
+* Pierre Rudloff
+* Ben Tucci
+* Daniel Maxwell-Ross
+* Matthew Gregg
+* Abe Weishaupt
+* Kẏra
+* 8zu
+* Stephanie Pakrul
+* Reilly Grant
+* Kurt Mosiejczuk
+* Thomas Citharel
+* Forrest Oliphant
+* Sebastian Morr
+* Tim
+* umiyuki
+* socketwench
+* Salomao Becker
+* Loïc 'iooner' Keyeux
+* Syluban
+* geknow
+* Alan Love
+* Stephen A. Goss
+* Bruno Dias
+* Christopher Rudolph
+* Teslawf
+* Tablesaw Tablesawsen
+* Brian Moore
+* Hans de Wolf
+* Enrique Santos
+* Yoshitaka Kaneko
+* Rob Flickenger
+* Maxime Mélinon
+* Andrew Louis
+* Rajesh Patreon Krishnan
+* Javier Jardón
+* Dan Shick
+* Eric Mill
+* maloki / kinkymal
+* Karlo Luiten
+* Ryan
+* Wonderfall
+* Neva Nevi
+* Adam Frey
+* T54r4n1
+* Alexander
+* h-izumi
+* Helly
+* Justin Humm
+* Sam Marshall
+* Arthur Wang
+* Kevin Menzel
+* Yamagishi Kazutoshi
+* Jennie Schilling
+* Maxime Borges
+* Bjarni R. Einarsson
+* LM
+* Pat Rafferty
+* Andrew Davis
+* Antoine-Frédéric Raquin Strik
+* daemoneye

+ 6 - 0
Running-Mastodon/Administration-guide.md

@@ -8,6 +8,12 @@ So, you have a working Mastodon instance... now what?
 The following rake task:
 
     RAILS_ENV=production bundle exec rails mastodon:make_admin USERNAME=alice
+    (or docker-compose run --rm web rails mastodon:make_admin USERNAME=alice)
+
+or, if using docker:
+
+    docker-compose run --rm web rails mastodon:make_admin USERNAME=alice
+
 
 Would turn the local user "alice" into an admin.
 

+ 12 - 1
Running-Mastodon/Alternatives.md

@@ -191,15 +191,26 @@ Setting up Mastodon behind Apache is possible as well, although you will need to
 
    DocumentRoot /home/mastodon/live/public/
 
-   Header add Strict-Transport-Security "max-age=31536000"
+   Header always set Referrer-Policy "strict-origin-when-cross-origin"
+   Header always set Strict-Transport-Security "max-age=31536000"
+
    SSLEngine on
    SSLProtocol -all +TLSv1.2
    SSLHonorCipherOrder on
    SSLCipherSuite EECDH+AESGCM:AES256+EECDH:AES128+EECDH
+   SSLCompression off
+   SSLSessionTickets off
+   SSLStaplingResponderTimeout 5
+   SSLStaplingReturnResponderErrors off
+   SSLUseStapling on
 
    SSLCertificateFile example.pem
    SSLCertificateKeyFile example.key
 
+   <Location /assets>
+      Header always set Cache-Control "public, max-age=31536000, immutable"
+   </Location>
+
    ProxyPreserveHost On
    RequestHeader set X-Forwarded-Proto "https"
    ProxyPass /500.html !

+ 6 - 6
Running-Mastodon/PgBouncer-guide.md

@@ -48,15 +48,15 @@ PgBouncer has two config files: `pgbouncer.ini` and `userlist.txt` both in `/etc
 
 Add the `mastodon` user to the `userlist.txt`:
 
-    "mastodon" "md599dff7ae01ae2dc33ae052264bf22bf4"
+    "mastodon" "md5d75bb2be2d7086c6148944261a00f605"
 
-Here we're using the md5 scheme, where the md5 password is just the md5sum of `username + password` with the string `md5` prepended. For instance, to derive the hash for user `mastodon` with password `password`, you can do:
+Here we're using the md5 scheme, where the md5 password is just the md5sum of `password + username` with the string `md5` prepended. For instance, to derive the hash for user `mastodon` with password `password`, you can do:
 
 ```bash
 # ubuntu, debian, etc.
-echo -n "mastodonpassword" | md5sum
+echo -n "passwordmastodon" | md5sum
 # macOS, openBSD, etc.
-md5 -s "mastodonpassword"
+md5 -s "passwordmastodon"
 ```
 
 Then just add `md5` to the beginning of that.
@@ -64,8 +64,8 @@ Then just add `md5` to the beginning of that.
 You'll also want to create a `pgbouncer` admin user to log in to the PgBouncer admin database. So here's a sample `userlist.txt`:
 
 ```
-"mastodon" "md599dff7ae01ae2dc33ae052264bf22bf4"
-"pgbouncer" "md509c950063a6cf1b217ee831d0f4c6771"
+"mastodon" "md5d75bb2be2d7086c6148944261a00f605"
+"pgbouncer" "md5a45753afaca0db833a6f7c7b2864b9d9"
 ```
 
 In both cases the password is just `password`.

+ 37 - 0
Running-Mastodon/Production-guide.md

@@ -113,6 +113,8 @@ It is recommended to create a special user for mastodon on the server (you could
 
 ## General dependencies
 
+### Ubuntu / Debian
+
     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 -
 
@@ -120,14 +122,47 @@ It is recommended to create a special user for mastodon on the server (you could
 
     sudo npm install -g yarn
 
+### CentOS / RHEL
+
+    sudo yum install libxml2-devel ImageMagick libxslt-devel git curl nodejs file
+    sudo yum -y install epel-release
+    sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
+    sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
+    sudo yum -y install ffmpeg ffmpeg-devel
+
+    sudo yum group install "Development tools"
+    curl -sL https://rpm.nodesource.com/setup_4.x | sudo bash -
+
+    sudo npm install -g yarn
+
 ## Redis
 
+### Ubuntu / Debian
+
     sudo apt-get install redis-server redis-tools
 
+### CentOS / RHEL
+
+    sudo yum install redis rubygem-redis
+
 ## Postgres
 
+### Ubuntu / Debian
+
     sudo apt-get install postgresql postgresql-contrib
 
+### CentOS / RHEL
+
+    sudo yum install postgresql-server postgresql postgresql-contrib postgresql-devel
+
+Initial Setup postgres:
+
+    sudo postgresql-setup initdb
+    sudo systemctl start postgresql
+    sudo systemctl enable postgresql
+
+### All Operating Systems:
+
 Set up a user and database for Mastodon:
 
     sudo su - postgres
@@ -138,6 +173,8 @@ In the prompt:
     CREATE USER mastodon CREATEDB;
     \q
 
+### Ubuntu 16.04
+
 Under Ubuntu 16.04, you will need to explicitly enable ident authentication so that local users can connect to the database without a password:
 
 ```sh

+ 24 - 1
Running-Mastodon/Scalingo-guide.md

@@ -1,6 +1,8 @@
 Scalingo guide
 ==============
 
+## Initial deployment
+
 [![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.
@@ -9,5 +11,26 @@ Scalingo guide
   * 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 Scalingo dashboard.
+4. Register for an account on your instance, then use the `scalingo` CLI to make yourself admin: `scalingo -a yourapp run -e USERNAME=yourusername rails mastodon:make_admin`.
+5. Configure site-specific settings as appropriate in Settings > Administration.
+6. Everything is done.
+
+## Using a custom domain
+
+> Note: an SSL/TLS certificate will automatically be provisioned by Scalingo using Lets Encrypt.
+
+1. Set a `CNAME` to the `scalingo.io` subdomain you created for your app.
+2. Use the `scalingo` CLI to set up the virtual host: `scalingo -a yourapp domains-add example.com`
+
+## Upgrading to newer versions of Mastodon
 
-To make yourself an admin, you can use the `scalingo` CLI: `scalingo run -e USERNAME=yourusername rails mastodon:make_admin`.
+1. Install an SSH key in your Scalingo account: `scalingo -a yourapp keys-add keynamehere /path/to/key`
+2. Check out the git repository Scalingo made for you.  For some reason, this will be empty by default.
+3. Create a vendor branch in your git repository: `git checkout -b vendor`
+4. Import the Mastodon sources of your choice, for example 1.3-stable: `git pull http://github.com/tootsuite/mastodon 1.3-stable`
+5. Merge the vendor branch to master: `git checkout master && git merge vendor`
+6. Push to Scalingo: `git push`.
+   > Note: Once the new application is deployed, it will be in an inconsistent state.
+7. Run rails database migrations: `scalingo -a yourapp run -e RAILS_ENV=production rails db:migrate`
+8. Restart all containers: `scalingo -a yourapp restart`
+9. Everything is done.

+ 1 - 0
Running-Mastodon/Serving_a_different_domain.md

@@ -83,3 +83,4 @@ There are a few known issues with Mastodon:
   Fortunately, since v1.3.0, Mastodon will reply to `acct:user@WEB_DOMAIN` queries with the account informations for `acct:user@LOCAL_DOMAIN`, effectively working around this issue at the cost of an extra webfinger discovery per interaction.
 - Mastodon does not actually use `WEB_DOMAIN` everywhere it should and will instead use whatever host it was accessed with.
   For this reason, your Mastodon instance should only be reachable on `WEB_DOMAIN` and not `LOCAL_DOMAIN` (HTTP redirects are fine, but avoid proxying from `LOCAL_DOMAIN` to `WEB_DOMAIN`)
+- Remote Mastodon instances on v1.3.0, v1.3.1 or v1.3.2 from which you are following people won't PuSH new messages to your instance. This is a known bug, see [#2672](https://github.com/tootsuite/mastodon/issues/2672)

+ 6 - 3
Running-Mastodon/Vagrant-guide.md

@@ -26,13 +26,16 @@ Running `vagrant up` for the first time will run provisioning, which will:
 - Download the Ubuntu 14.04 base image, if there isn't already a copy on your machine
 - Create a new VirtualBox virtual machine from that image
 - Run the provisioning script (located inside the Vagrantfile), which installs the system packages, Ruby gems, and JS modules required for Mastodon
-- Run the startup script
 
 ## Starting the server
 
 The Vagrant box will automatically start after provisioning. It can be started in future with `vagrant up` from the mastodon directory.
 
-Once the Ubuntu virtual machine has booted, it will run the startup script, which loads the environment variables from `.env.vagrant` and then runs `rails s -d -b 0.0.0.0`. This will start a Rails server. You can then access your development site at http://mastodon.dev (or at http://localhost:3000 if you haven't installed vagrants-hostupdater). By default, your development environment will have an admin account created for you to use - the email address will be `admin@mastodon.dev` and the password will be `mastodonadmin`.
+To start the application:
+
+    vagrant ssh -c "cd /vagrant && foreman start"
+
+The rails server, streaming server and webpack-dev-server will start up. You can then access your development site at http://mastodon.dev (or at http://localhost:3000 if you haven't installed vagrants-hostupdater). By default, your development environment will have an admin account created for you to use - the email address will be `admin@mastodon.dev` and the password will be `mastodonadmin`.
 
 To stop the server, simply run `vagrant halt`.
 
@@ -44,7 +47,7 @@ By default, your instance's ActionMailer will use "Letter Opener Web" for email.
 
 ## Making changes/developing
 
-You are able to set environment variables, which are used for Mastodon configuration, by editing the `.env.vagrant` file. Any changes you make will take effect after a Vagrant restart.
+You are able to set environment variables, which are used for Mastodon configuration, by editing the `.env.vagrant` file. `.env.vagrant` is loaded when you run `vagrant ssh`.
 
 Vagrant has mounted your mastodon folder inside the virtual machine. This means that any change to the files in the folder(e.g. the Rails controllers or the React components in /app) should immediately take effect on the live server. This allows you to make and test changes, and create new commits, without ever needing to access the virtual machine.
 

+ 2 - 0
Using-Mastodon/Apps.md

@@ -18,6 +18,7 @@ Some people have started working on apps for the Mastodon API. Here is a list of
 |tootstream|CLI|<https://github.com/magicalraccoon/tootstream>|[@Raccoon@mastodon.social](https://mastodon.social/users/Raccoon)|
 |toot|CLI|<https://github.com/ihabunek/toot>|[@ihabunek@mastodon.social](https://mastodon.social/users/ihabunek)|
 | [Capella](https://github.com/coolstar/Capella) | Windows 7, 8.1, 10 | https://coolstar.org/capella | [@coolstar@mastodon.social](https://mastodon.social/users/coolstar)|
+|[WinMasto](https://github.com/drasticactions/WinMasto)|Windows 10|<https://github.com/drasticactions/WinMasto>|[@drasticactions@mastodon.network](https://mastodon.network/users/drasticactions)|
 |[Mastodon UWP (beta)](https://github.com/woachk/mastodon/releases)|Windows 10|<https://github.com/woachk/mastodon>|[@my123@mastodon.social](https://mastodon.social/users/my123)|
 |[mastodon.el](https://github.com/jdenen/mastodon.el)|Emacs|<https://github.com/jdenen/mastodon.el>|[@johnson@mastodon.social](https://mastodon.social/users/johnson)|
 | [Mstdn](https://github.com/rhysd/Mstdn) | macOS, Windows, Linux |<https://github.com/rhysd/Mstdn>|[@Linda_pp@mstdn.jp](https://mstdn.jp/@Linda_pp) or [@inudog@mastodon.social](https://mastodon.social/@inudog) |
@@ -25,6 +26,7 @@ Some people have started working on apps for the Mastodon API. Here is a list of
 |[Mstdn (Mastodon CLI)](https://github.com/mattn/go-mastodon)|CLI|<https://github.com/mattn/go-mastodon>|[@mattn@mstdn.jp](https://mstdn.jp/@mattn)|
 |[madonctl](https://github.com/McKael/madonctl)|CLI, cross-platform|<https://github.com/McKael/madonctl>|[@McKael@mamot.fr](https://mamot.fr/@McKael)|
 |[Twidere](https://play.google.com/store/apps/details?id=org.mariotaku.twidere)|Android|<https://github.com/TwidereProject/Twidere-Android>|[@twidereproject](https://twitter.com/twidereproject)|
+|[Mastodon-iOS](https://itunes.apple.com/us/app/mastodon-ios/id1229531204?l=zh&ls=1&mt=8)|[iOS](https://itunes.apple.com/us/app/mastodon-ios/id1229531204?l=zh&ls=1&mt=8)||[@darkcl@mastodon.cloud](https://mastodon.cloud/@darkcl)|
 
 ## Bridges from/to other platforms
 

+ 2 - 2
Using-Mastodon/User-guide.md

@@ -168,11 +168,11 @@ Toot privacy is handled independently of account privacy, and individually for e
 
 **Unlisted** toots are public, except that they do not appear in the public timelines or search results. They are visible to anyone following you and appear on your profile page to the public even without a Mastodon login. Other than not appearing in the public timelines or search results, they function identically to public posts.
 
-**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. The option is of limited use if your account is not also set to require approval of new followers (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.
+**Followers-only** toots do not appear in the public timeline nor on your profile page to anyone viewing it unless they are on your Followers list. The option is of limited use if your account is not also set to require approval of new followers (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 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.
 
-Private toots do not federate to other instances, unless you @mention a remote user. In this case, they will federate to their instance, and users on that instance who follow both you and the @mentioned user will see it in their Home timelines. There is no reliable way to check if an instance will actually respect post privacy. Non-Mastodon servers, such as a GNU Social server, do not support Mastodon privacy settings. A user on GNU Social who you @mention in a private post would not even be aware that the post is intended to be private and would be able to boost it, which would undo the privacy setting. There is also no way to guarantee that someone could not just modify the code on their particular Mastodon instance to not respect private post restrictions. A warning will be displayed if you're composing a private toot that will federate to another instance. You should thus think through how much you trust the user you are @mentioning and the instance they are on.
+There is no reliable way to check if an instance will actually respect post privacy. Non-Mastodon servers, such as a GNU Social server, do not support Mastodon privacy settings. A user on GNU Social who you @mention in a private post would not even be aware that the post is intended to be private and would be able to boost it, which would undo the privacy setting. There is also no way to guarantee that someone could not just modify the code on their particular Mastodon instance to not respect private post restrictions. A warning will be displayed if you're composing a private toot that will federate to another instance. You should thus think through how much you trust the user you are @mentioning and the instance they are on.
 
 Private posts are not encrypted. Make sure you trust your instance admin not to just read your private posts on the back-end. Do not say anything you would not want potentially intercepted. 
 

+ 15 - 14
Using-the-API/API.md

@@ -41,19 +41,20 @@ ___
 
 | Language             | Library                                                         | Developer(s)                                                                   |
 | -------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------ |
-| .NET                 | [Mastodon.Net](https://github.com/Tlaster/Mastodon.Net)         |                                                                                |
-| .NET Standard        | [Mastonet](https://github.com/glacasa/Mastonet)                 |                                                                                |
-| C#                   | [mastodon-api-cs](https://github.com/pawotter/mastodon-api-cs)  |                                                                                |
+| Apex (Salesforce)    | [apex-mastodon](https://github.com/tzmfreedom/apex-mastodon)    |                                                                                |
 | C# (.NET Standard)   | [Mastodot](https://github.com/yamachu/Mastodot)                 |                                                                                |
+| C# (.NET Standard)   | [Mastonet](https://github.com/glacasa/Mastonet)                 |                                                                                |
+| C# (.NET)            | [mastodon-api-cs](https://github.com/pawotter/mastodon-api-cs)  |                                                                                |
+| C# (.NET)            | [Mastodon.Net](https://github.com/Tlaster/Mastodon.Net)         |                                                                                |
 | Crystal              | [mastodon.cr](https://github.com/decors/mastodon.cr)            |                                                                                |
 | Elixir               | [hunter](https://github.com/milmazz/hunter)                     |                                                                                |
 | Go                   | [go-mastodon](https://github.com/mattn/go-mastodon)             |                                                                                |
 | Go                   | [madon](https://github.com/McKael/madon)                        |                                                                                |
 | Haskell              | [hastodon](https://github.com/syucream/hastodon)                |                                                                                |
 | Java                 | [mastodon4j](https://github.com/sys1yagi/mastodon4j)            |                                                                                |
+| JavaScript           | [libodonjs](https://github.com/Zatnosk/libodonjs)               |                                                                                |
 | Javascript (Browser) | [mastodon.js](https://github.com/Kirschn/mastodon.js)           |                                                                                |
 | JavaScript (Node.js) | [node-mastodon](https://github.com/jessicahayley/node-mastodon) |                                                                                |
-| JavaScript           | [libodonjs](https://github.com/Zatnosk/libodonjs)               |                                                                                |
 | Perl                 | [Mastodon::Client](https://metacpan.org/pod/Mastodon::Client)   |                                                                                |
 | Python               | [Mastodon.py](https://github.com/halcy/Mastodon.py)             |                                                                                |
 | R                    | [mastodon](https://github.com/ThomasChln/mastodon)              |                                                                                |
@@ -125,7 +126,7 @@ Query parameters:
 | ---------- | -------------------------------------------------------------- | ---------- |
 | `max_id`   | Get a list of followers with ID less than or equal this value  | yes        |
 | `since_id` | Get a list of followers with ID greater than this value        | yes        |
-| `limit`    | Maximum number of accounts to get (Default 40, Max 80)         | yes        |
+| `limit`    | Maximum number of followers to get (Default 40, Max 80)        | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.
 
@@ -141,7 +142,7 @@ Query parameters:
 | ---------- | -------------------------------------------------------------- | ---------- |
 | `max_id`   | Get a list of followings with ID less than or equal this value | yes        |
 | `since_id` | Get a list of followings with ID greater than this value       | yes        |
-| `limit`    | Maximum number of accounts to get (Default 40, Max 80)         | yes        |
+| `limit`    | Maximum number of followings to get (Default 40, Max 80)       | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.
 
@@ -159,7 +160,7 @@ Query parameters:
 | `exclude_replies` | Skip statuses that reply to other statuses                   | yes        |
 | `max_id`          | Get a list of statuses with ID less than or equal this value | yes        |
 | `since_id`        | Get a list of statuses with ID greater than this value       | yes        |
-| `limit`           | Maximum number of accounts to get (Default 20, Max 40)       | yes        |
+| `limit`           | Maximum number of statuses to get (Default 20, Max 40)       | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.
 
@@ -246,7 +247,7 @@ Query parameters:
 | ----------------- | ------------------------------------------------------------- | ---------- |
 | `max_id`          | Get a list of blocks with ID less than or equal this value    | yes        |
 | `since_id`        | Get a list of blocks with ID greater than this value          | yes        |
-| `limit`           | Maximum number of accounts to get (Default 40, Max 80)        | yes        |
+| `limit`           | Maximum number of blocks to get (Default 40, Max 80)          | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.
 
@@ -264,7 +265,7 @@ Query parameters:
 | ----------------- | -------------------------------------------------------------- | ---------- |
 | `max_id`          | Get a list of favourites with ID less than or equal this value | yes        |
 | `since_id`        | Get a list of favourites with ID greater than this value       | yes        |
-| `limit`           | Maximum number of accounts to get (Default 20, Max 40)         | yes        |
+| `limit`           | Maximum number of favourites to get (Default 20, Max 40)       | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.
 
@@ -282,7 +283,7 @@ Query parameters:
 | ----------------- | ------------------------------------------------------------------- | ---------- |
 | `max_id`          | Get a list of follow requests with ID less than or equal this value | yes        |
 | `since_id`        | Get a list of follow requests with ID greater than this value       | yes        |
-| `limit`           | Maximum number of accounts to get (Default 40, Max 80)              | yes        |
+| `limit`           | Maximum number of requests to get (Default 40, Max 80)              | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.
 
@@ -351,7 +352,7 @@ Query parameters:
 | ----------------- | ------------------------------------------------------------------- | ---------- |
 | `max_id`          | Get a list of mutes with ID less than or equal this value           | yes        |
 | `since_id`        | Get a list of mutes with ID greater than this value                 | yes        |
-| `limit`           | Maximum number of accounts to get (Default 40, Max 80)              | yes        |
+| `limit`           | Maximum number of mutes to get (Default 40, Max 80)                 | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.
 
@@ -369,7 +370,7 @@ Query parameters:
 | ----------------- | ------------------------------------------------------------------- | ---------- |
 | `max_id`          | Get a list of notifications with ID less than or equal this value   | yes        |
 | `since_id`        | Get a list of notifications with ID greater than this value         | yes        |
-| `limit`           | Maximum number of accounts to get (Default 15, Max 30)              | yes        |
+| `limit`           | Maximum number of notifications to get (Default 15, Max 30)         | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.
 
@@ -466,7 +467,7 @@ Query parameters:
 | ----------------- | ------------------------------------------------------------------------ | ---------- |
 | `max_id`          | Get a list of reblogged/favourited with ID less than or equal this value | yes        |
 | `since_id`        | Get a list of reblogged/favourited with ID greater than this value       | yes        |
-| `limit`           | Maximum number of accounts to get (Default 40, Max 80)                   | yes        |
+| `limit`           | Maximum number of reblogged/favourited to get (Default 40, Max 80)       | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.
 
@@ -526,7 +527,7 @@ Query parameters:
 | `local`           | Only return statuses originating from this instance (public and tag timelines only) | yes        |
 | `max_id`          | Get a list of timelines with ID less than or equal this value                       | yes        |
 | `since_id`        | Get a list of timelines with ID greater than this value                             | yes        |
-| `limit`           | Maximum number of accounts to get (Default 20, Max 40)                              | yes        |
+| `limit`           | Maximum number of statuses on the requested timeline to get (Default 20, Max 40)    | yes        |
 
 `max_id` and `since_id` are usually get from the `Link` header.