Gay Catgirls' fork of Moa. Link your Mastodon, Pleroma, or Akkoma account to Twitter!
|
||
---|---|---|
.idea | ||
logs | ||
migrations | ||
moa | ||
public | ||
static | ||
templates | ||
tests | ||
tmp | ||
tools | ||
.coveragerc | ||
.gitignore | ||
.python-version | ||
app.py | ||
config.py.sample | ||
defaults.py | ||
docker-compose.yml | ||
docker-config.py.sample | ||
Dockerfile | ||
LICENSE | ||
passenger_wsgi.py | ||
Pipfile | ||
README.md | ||
requirements-dev.in | ||
requirements.in | ||
requirements.txt | ||
run-dev.sh | ||
run.sh | ||
worker.sh |
_____ _____ _ _ _ __ __
/ ____| / ____| | | (_) | | | \/ |
| | __ __ _ _ _ | | __ _| |_ __ _ _ _ __| |___ | \ / | ___ __ _
| | |_ |/ _` | | | | | | / _` | __/ _` | | '__| / __| | |\/| |/ _ \ / _` |
| |__| | (_| | |_| | | |___| (_| | || (_| | | | | \__ \ | | | | (_) | (_| |
\_____|\__,_|\__, | \_____\__,_|\__\__, |_|_| |_|___/ |_| |_|\___/ \__,_|
__/ | __/ |
|___/ |___/
┌──────────────┐ ╔══════════════════════╗ ┌──────────────┐
│ Instagram │────▶║ moa.gaycatgirl.sex ║◀────▶│ Twitter │
└──────────────┘ ╚══════════════════════╝ └──────────────┘
▲
│
▼
┌───────────────┐
│ Fediverse │
└───────────────┘
Link your Mastodon, Pleroma, or Akkoma account to Twitter and Instagram! https://moa.gaycatgirl.sex
Thank you to James Moore as the original creator and to the FedStoa group for being the maintainers of both the original code and the original public service.
You can follow us on the Fediverse to receive updates and service notices.
Install & Run
Using containers
This works for either Docker or Podman, https://moa.gaycatgirl.sex uses Podman and podman-compose in prod.
- Ensure you have either Docker or Podman installed, and the appropriate compose utility installed
- Clone the repo
- Copy the sample docker config
cp docker-config.py config.py
and modify the fields appropriately - Pull the image down (or don't if you want it to automatically build from source) with
{podman|docker} pull git.gaycatgirl.sex/gaycatgirls/moa:latest
- Run
{podman|docker}-compose up -d
to download and start the containers - (TODO: this is? awful, figure out a better solution!) Exec into the web container to run the database migrations
{podman|docker}-compose exec web bash
and thenMOA_CONFIG=ProductionConfig python -m moa.models
- Restart the containers using
{podman|docker}-compose restart
- It should now be up!
From Source (Requires Python 3.6+)
Moa is a flask app and can be run with python
or proxied via WSGI.
- Clone the repo
- On Debian/Ubuntu you'll need to
apt install python-dev python3-dev build-essential
- Install pipenv
pip3 install pipenv
PIPENV_VENV_IN_PROJECT=1 pipenv install
cp config.py.sample config.py
and override the settings fromdefaults.py
MOA_CONFIG=config.DevelopmentConfig /usr/local/bin/pipenv run python -m moa.models
to create the DB tablesMOA_CONFIG=config.DevelopmentConfig /usr/local/bin/pipenv run python app.py
- Run the worker with
MOA_CONFIG=DevelopmentConfig /usr/local/bin/pipenv run python -m moa.worker
or use your favourite WSGI server.
Features
- preserves image alt text
- handles boosts/retweets
Some code lifted from https://github.com/halcy/MastodonToTwitter
Twitter App setup
If you plan to use twitter then you'll need to create a twitter app first so the required crednetials can be obtained.
- Follow the steps here to get started https://python-twitter.readthedocs.io/en/latest/getting_started.html
- For the Callback URL use [moa_base_url]/twitter_oauthorized e.g. https://example.com/twitter_oauthorized
- Access Permissions need to be "read" and "write"
Example nginx/passenger configuration
server {
listen 80;
server_name moa.party;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ;
server_name moa.party;
# SSL
ssl on;
ssl_certificate /etc/certificates/moa.crt;
ssl_certificate_key /etc/certificates/moa.key;
client_max_body_size 1G;
access_log /var/www/moa/logs/access.log;
error_log /var/www/moa/logs/error.log;
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }
passenger_enabled on;
passenger_app_env production;
passenger_python /var/www/moa/.venv/bin/python3;
passenger_env_var MOA_CONFIG config.ProductionConfig;
root /var/www/moa/public;
}