commit: e70d313963272424b03a3562e63f603b4b0bbe8a
parent: 5021c4e9ca78881f5379a18185a46e580b8f2c34
Author: Morgan Bazalgette <the@howl.moe>
Date: Thu, 29 Mar 2018 01:46:07 +0200
Rewrite installation guide for using with pleroma be
Diffstat:
3 files changed, 77 insertions(+), 106 deletions(-)
diff --git a/README.md b/README.md
@@ -1,96 +1,74 @@
-![Mastodon](https://i.imgur.com/NhZc40l.png)
-========
-
-[![Build Status](https://img.shields.io/travis/tootsuite/mastodon.svg)][travis]
-[![Code Climate](https://img.shields.io/codeclimate/maintainability/tootsuite/mastodon.svg)][code_climate]
-
-[travis]: https://travis-ci.org/tootsuite/mastodon
-[code_climate]: https://codeclimate.com/github/tootsuite/mastodon
-
-Mastodon is a **free, open-source social network server** based on **open web protocols** like ActivityPub and OStatus. The social focus of the project is a viable decentralized alternative to commercial social media silos that returns the control of the content distribution channels to the people. The technical focus of the project is a good user interface, a clean REST API for 3rd party apps and robust anti-abuse tools.
-
-Click on the screenshot below to watch a demo of the UI:
-
-[![Screenshot](https://i.imgur.com/pG3Nnz3.jpg)][youtube_demo]
-
-[youtube_demo]: https://www.youtube.com/watch?v=YO1jQ8_rAMU
-
-**Ruby on Rails** is used for the back-end, while **React.js** and Redux are used for the dynamic front-end. A static front-end for public resources (profiles and statuses) is also provided.
-
-If you would like, you can [support the development of this project on Patreon][patreon] or [Liberapay][liberapay]. Alternatively, you can donate to this BTC address: `17j2g7vpgHhLuXhN4bueZFCvdxxieyRVWd`
-
-[patreon]: https://www.patreon.com/user?u=619786
-[liberapay]: https://liberapay.com/Mastodon/
-
----
-
-## Resources
-
-- [Frequently Asked Questions](https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/FAQ.md)
-- [Use this tool to find Twitter friends on Mastodon](https://bridge.joinmastodon.org)
-- [API overview](https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md)
-- [List of Mastodon instances](https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/List-of-Mastodon-instances.md)
-- [List of apps](https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md)
-- [List of sponsors](https://joinmastodon.org/sponsors)
-
-## Features
-
-**No vendor lock-in: Fully interoperable with any conforming platform**
-
-It doesn't have to be Mastodon, whatever implements ActivityPub or OStatus is part of the social network!
-
-**Real-time timeline updates**
-
-See the updates of people you're following appear in real-time in the UI via WebSockets. There's a firehose view as well!
-
-**Federated thread resolving**
-
-If someone you follow replies to a user unknown to the server, the server fetches the full thread so you can view it without leaving the UI
-
-**Media attachments like images and short videos**
-
-Upload and view images and WebM/MP4 videos attached to the updates. Videos with no audio track are treated like GIFs; normal videos are looped - like vines!
-
-**OAuth2 and a straightforward REST API**
-
-Mastodon acts as an OAuth2 provider so 3rd party apps can use the API
-
-**Fast response times**
-
-Mastodon tries to be as fast and responsive as possible, so all long-running tasks are delegated to background processing
-
-**Deployable via Docker**
-
-You don't need to mess with dependencies and configuration if you want to try Mastodon, if you have Docker and Docker Compose the deployment is extremely easy
-
----
-
-## Development
-
-Please follow the [development guide](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Development-guide.md) from the documentation repository.
-
-## Deployment
-
-There are guides in the documentation repository for [deploying on various platforms](https://github.com/tootsuite/documentation#running-mastodon).
-
-## Contributing
-
-You can open issues for bugs you've found or features you think are missing. You can also submit pull requests to this repository. [Here are the guidelines for code contributions](CONTRIBUTING.md)
-
-**IRC channel**: #mastodon on irc.freenode.net
-
-## License
-
-Copyright (C) 2016-2018 Eugen Rochko & other Mastodon contributors (see AUTHORS.md)
-
-This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
-
----
-
-## Extra credits
-
-The elephant friend illustrations are created by [Dopatwo](https://mastodon.social/@dopatwo)
+# Mastodon / mastofe repository
+
+Here is a fork of mastodon. We could really just remove all of the code except
+for the frontend, but to easily pull the upstream repo we'll just keep
+everything. This is my fork for the moment with the idea of making the mastofe
+just as polished as the pleromafe. If you want to get access, open an issue or
+hit me up at howl@social.zxq.co.
+
+# Development
+
+I use a combination of the pleroma backend + yarn + nginx to do local
+development. I refuse to install Ruby. Here's how to get it running on your own
+machine:
+
+## Install yarn
+
+Yarn will be needed to set up the mastodon frontend for development. Check out
+https://yarnpkg.com/lang/en/docs/install/ . For Debian, it's like this:
+
+```sh
+# import yarn pub key and repo
+curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
+echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
+sudo apt-get update
+sudo apt-get install yarn
+```
+
+## Mastodon Frontend Setup
+
+```sh
+# Install dependencies
+yarn install -D
+npm run dev
+# check that http://localhost:3035/packs/common.css works in your browser once
+# webpack is done compiling. if css shows up, then it should have worked!
+```
+
+## nginx setup
+
+I'll assume that you have already fired up pleroma using the installation guide.
+To work on the frontend while still having the backend up, use this nginx
+config.
+
+```
+server {
+ listen 80;
+ server_name pleroma.testing;
+
+ location /packs {
+ add_header 'Access-Control-Allow-Origin' '*';
+ proxy_http_version 1.1;
+ proxy_set_header Host $http_host;
+
+ proxy_pass http://localhost:3035;
+ }
+
+ location / {
+ add_header 'Access-Control-Allow-Origin' '*';
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ proxy_set_header Host $http_host;
+
+ proxy_pass http://localhost:4000;
+ }
+}
+```
+
+Change the `server_name` if you like. I personally like to create a new entry
+in /etc/hosts and add `127.0.0.1 pleroma.testing`, but you do what suits you.
+
+If you have enough luck, navigating to your \<server\_name\>/web should show
+you the mastodon frontend, and should also work with all the nice things of
+webpack such as hot reloading. Have fun!
diff --git a/app/javascript/mastodon/api.js b/app/javascript/mastodon/api.js
@@ -1,5 +1,4 @@
import axios from 'axios';
-import ready from './ready';
import LinkHeader from './link_header';
export const getLinks = response => {
@@ -12,17 +11,10 @@ export const getLinks = response => {
return LinkHeader.parse(value);
};
-let csrfHeader = {};
-function setCSRFHeader() {
- const csrfToken = document.querySelector('meta[name=csrf-token]').content;
- csrfHeader['X-CSRF-Token'] = csrfToken;
-}
-ready(setCSRFHeader);
-
export default getState => axios.create({
- headers: Object.assign(csrfHeader, getState ? {
+ headers: getState ? {
'Authorization': `Bearer ${getState().getIn(['meta', 'access_token'], '')}`,
- } : {}),
+ } : {},
transformResponse: [function (data) {
try {
diff --git a/package.json b/package.json
@@ -9,6 +9,7 @@
"build:development": "cross-env RAILS_ENV=development ./bin/webpack",
"build:production": "cross-env RAILS_ENV=production ./bin/webpack",
"manage:translations": "node ./config/webpack/translationRunner.js",
+ "dev": "cross-env NODE_ENV=development webpack-dev-server --config config/webpack/development.js --progress --color",
"start": "node ./streaming/index.js",
"test": "npm-run-all test:lint test:jest",
"test:lint": "eslint -c .eslintrc.yml --ext=js app/javascript/ config/webpack/ streaming/",