1. InstaaSnap is a Open Source IG Post Saver API, WebApp, iOS and Andoid app.
2. I created it to save cat and travel videos from IG.
3. It's Privacy friendly, no database, no analytics, no logs, no cookies.
4. InstaaSnap is built with Node.js, Express.js, React.js, Next.js and React Native.
1. You can't download and use images you find on Instagram without the permission of the copyright owner.
2. Do you always need a permission?
3. No, if the downloading and sharing comes under fair use and other exceptions to copyright.
4. No, if the image you're using is in the public domain.
5. No, if the copyright owner has clearly stated that you may freely use the image without obtaining permission.
6. No, if the image has a Creative Commons (CC) license.
- Choudhary Abdullah - API, WebApp and NativeApp - LinkedIn
- Node.js - Backend Runtime Environment
- Express.js - Backend Framework
- React.js - Frontend Library
- Next.js - React Framework
- React Native - Cross Plateform Apps
We use SemVer for versioning. For the versions available, see the tags on this repository.
1. Add your IG Login Cookie to webapi's and nativeapi's app.js
2. Change instaasnap.app to your domain everywhere.
2. For React Native App, open XCode and Android Studio to do suitable adjustments like App Icons, Splash Screen, and Production Build.
sudo apt update
sudo apt install nginx -y
curl -sL https://deb.nodesource.com/setup_17.x | sudo bash -
cat /etc/apt/sources.list.d/nodesource.list
sudo apt install nodejs -y
node -v
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
multi_accept on;
}
http {
# Basic Settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 20M;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# SSL Settings
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# Logging Settings
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# Gzip Settings
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types
application/javascript application/rss+xml application/vnd.ms-fontobject application/x-font
application/x-font-opentype application/x-font-otf application/x-font-truetype application/x-font-ttf
application/x-javascript application/xhtml+xml application/xml font/opentype font/otf font/ttf
image/svg+xml image/x-icon text/css text/html text/javascript text/plain text/xml;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
sudo mkdir -p /var/www/instaasnap.app/nativeapi
sudo mkdir -p /var/www/instaasnap.app/webapi
sudo mkdir -p /var/www/instaasnap.app/webapp
sudo chown -R www-data:www-data /var/www/instaasnap.app
sudo chmod -R 755 /var/www/instaasnap.app
sudo nano /etc/nginx/sites-available/instaasnap.app
server {
server_name instaasnap.app;
# NativeAPI
location /nativeapi {
proxy_pass http://localhost:3004;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 30s;
}
# WebAPI
location /webapi {
proxy_pass http://localhost:3003;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 30s;
}
# WebApp
location / {
proxy_pass http://localhost:3002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 30s;
}
# Output Folder
location /output {
root /var/www/instaasnap.app/webapi;
}
}
sudo ln -s /etc/nginx/sites-available/instaasnap.app /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
sudo rm -rf /var/www/html
sudo systemctl restart nginx
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d instaasnap.app
sudo systemctl status certbot.timer
sudo certbot renew --dry-run
sudo systemctl restart nginx
/var/www/instaasnap.app/nativeapi/*
/var/www/instaasnap.app/webapi/*
/var/www/instaasnap.app/webapp/*
cd /var/www/instaasnap.app/nativeapi
npm install
npm install pm2 -g
pm2 start app.js -n NativeAPI
cd /var/www/instaasnap.app/webapi
npm install
pm2 start app.js -n WebAPI
cd /var/www/instaasnap.app/webapp
npm install
npm run build
pm2 start npm -n WebApp -- start
cd nativeapp
npm i
cd ios && pod install
npx react-native link
npx react-native run-ios