Deweys Media is a full-stack Flask social media platform with authentication, posts, messaging, stories, notifications, and file uploads.
- Python (Flask)
- Flask-SQLAlchemy
- Gunicorn
- Nginx
- SQLite
- HTML / CSS / JavaScript
/var/www/deweys-media/
├── app.py
├── wsgi.py
├── requirements.txt
├── instance/
│ └── database.db
├── static/
│ ├── uploads/
│ ├── message_uploads/
│ └── story_uploads/
├── templates/
└── venv/python3 --version
pip3 --versionpython3 -m venv venv
source venv/bin/activateWindows:
python -m venv venv
venv\Scripts\activatemkdir -p instance
mkdir -p static/uploads
mkdir -p static/message_uploads
mkdir -p static/story_uploadsexport FLASK_APP=app.py
export FLASK_ENV=development
export SECRET_KEY="change-this"
export DEWEYS_GMAIL_APP_PASSWORD="your-password"flask runpythonfrom app import app, db
with app.app_context():
db.create_all()sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-venv python3-pip nginx certbot python3-certbot-nginxsudo mkdir -p /var/www/deweys-media
sudo chown -R $USER:$USER /var/www/deweys-media
cd /var/www/deweys-media
git clone https://github.com/yourusername/deweys-media.git .python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install gunicorngunicorn --bind 127.0.0.1:8001 wsgi:appsudo nano /etc/systemd/system/deweys-media.service[Unit]
Description=Deweys Media Gunicorn
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/var/www/deweys-media
Environment="PATH=/var/www/deweys-media/venv/bin"
Environment="SECRET_KEY=change-this"
Environment="DEWEYS_GMAIL_APP_PASSWORD=your-password"
Environment="DEPLOY_SECRET=super-secret-key"
ExecStart=/var/www/deweys-media/venv/bin/gunicorn \
--workers 3 \
--bind 127.0.0.1:8001 \
wsgi:app
Restart=always
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable deweys-media
sudo systemctl start deweys-mediasudo nano /etc/nginx/sites-available/deweys-mediaserver {
server_name yourdomain.com;
client_max_body_size 100M;
location /static/ {
alias /var/www/deweys-media/static/;
}
location / {
proxy_pass http://127.0.0.1:8001;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}sudo ln -s /etc/nginx/sites-available/deweys-media /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxsudo certbot --nginx -d yourdomain.comsudo chown -R www-data:www-data /var/www/deweys-media
sudo chmod -R 755 /var/www/deweys-mediasudo systemctl status deweys-media
sudo journalctl -u deweys-media -f
sudo nginx -tYour app will be live at: (Your domain) [https://deweys-media.deweyshosting.com:8081/]