The simplest way to run AI automation workflows 24/7, such as daily news digests, product-listing translation and price alerts, is a small always-on VPS running n8n, cron and Python scripts that call an LLM API. JUSTG offers cloud VPS in Tokyo, Japan and Seoul, South Korea, where the OpenAI, Claude and Gemini APIs are officially available, and in Moscow, Russia for Russian-market jobs, all from $19.99/mo with 1 native IPv4 + free IPv6 and automatic deployment after payment. This guide shows concrete workflows, which location fits which job, a ready-to-adapt cron setup, security basics and sizing, using only feeds, APIs and data you are allowed to use.
- Locations: Tokyo, Japan; Seoul, South Korea (KT network); Moscow, Russia; Johannesburg, South Africa cloud VPS coming soon.
- AI APIs: OpenAI, Claude and Gemini are available in Japan and South Korea, not in Russia. JUSTG tested its Tokyo and Seoul IPs with all three in October 2026.
- Routes: Tokyo and Seoul use Asia-optimized routes; Moscow uses China Telecom CN2 GIA to mainland China.
- Price: cloud VPS from $19.99/mo (1 core / 512 MB) up to 7 cores / 24 GB at $169.99/mo; 500 Mbps port.
- IP: 1 native local IPv4 + free IPv6 per VPS; extra IPs can be added via Upgrade options.
What to automate: five proven AI workflows
The best candidates are repetitive text jobs where a human only needs to review the result.
- Market and news digests: pull Japanese, Korean or Russian RSS feeds, press releases or licensed data APIs every morning and summarize them into Chinese and English for your team.
- Listing translation: turn a master product sheet into natural Japanese, Korean and Russian titles and descriptions for marketplaces, with a fixed glossary.
- Own-store monitoring: check your own listings, stock and prices through your store or marketplace seller API and alert when something drops below a floor.
- Multilingual SEO drafts: generate first drafts of category pages, FAQs and meta descriptions in several languages for an editor to review.
- Inbox and ticket triage: classify incoming emails or support tickets by language and topic, and draft replies.
Which JUSTG location to pick for each job
Run anything that calls OpenAI, Claude or Gemini in Tokyo or Seoul; use Moscow only for Russian-market jobs that do not call these APIs.
| Workflow | Tokyo, Japan | Seoul, South Korea | Moscow, Russia |
|---|---|---|---|
| Calls OpenAI / Claude / Gemini | Yes, officially available | Yes, officially available | No, not available in Russia |
| Japanese marketplace and news jobs | Best fit, native Japanese IP | Works | Not recommended |
| Korean marketplace and news jobs | Works | Best fit, native Korean IP on KT | Not recommended |
| Russian-market jobs without AI APIs (feeds, seller API sync, publishing prepared files, Russian storefront) | Possible, but not local | Possible, but not local | Best fit, native Russian IP |
| Teams in mainland China reviewing output | Asia-optimized route | Asia-optimized route | China Telecom CN2 GIA |
A common split for sellers in Japan, Korea and Russia: a JUSTG Tokyo Cloud VPS does all AI work (translation, summaries, drafts), then pushes finished files to a JUSTG Moscow Cloud VPS that handles Russian-side jobs such as syncing with your seller account or hosting a Russian storefront. The Moscow server never calls the AI APIs itself. Make sure your organization and use case comply with each AI provider's terms on supported countries.
Hands-on: set up a jobs server with Python and cron
A dedicated non-root user, a virtual environment and a locked-down secrets file are the foundation.
On a fresh Ubuntu 24.04 JUSTG Tokyo Cloud VPS:
adduser --disabled-password --gecos "" jobs
mkdir -p /opt/jobs/{out,logs} && chown -R jobs:jobs /opt/jobs
sudo -u jobs python3 -m venv /opt/jobs/venv
sudo -u jobs /opt/jobs/venv/bin/pip install openai feedparser requests
cat > /opt/jobs/.env <<'ENV'
OPENAI_API_KEY=sk-...
SLACK_WEBHOOK=https://hooks.slack.com/services/...
SHOP_API_TOKEN=...
ENV
chmod 600 /opt/jobs/.env && chown jobs:jobs /opt/jobs/.env
Workflow 1: daily news and market digest
# /opt/jobs/digest.py - summarize feeds you are allowed to use
import feedparser, requests, os
from openai import OpenAI
FEEDS = ["https://news.example.com/rss/markets.xml", # use official RSS / licensed APIs
"https://example.com/ja/press/feed"]
llm = OpenAI()
items = []
for url in FEEDS:
for e in feedparser.parse(url).entries[:10]:
items.append(f"- {e.title}: {e.get('summary', '')[:500]} ({e.link})")
prompt = ("Summarize these Japanese/Korean/Russian items for a trading team. "
"Output 5-8 bullet points in Simplified Chinese, then the same in English. "
"Keep numbers and company names exact and keep each source link.\n\n" + "\n".join(items))
r = llm.chat.completions.create(model="gpt-4o-mini", max_tokens=1200,
messages=[{"role": "user", "content": prompt}])
text = r.choices[0].message.content
open("/opt/jobs/out/digest.md", "w").write(text)
requests.post(os.environ["SLACK_WEBHOOK"], json={"text": text[:3500]}, timeout=15)
Workflow 2: translate listings for Japan, Korea and Russia
# /opt/jobs/translate.py - products.csv (sku,title_en,desc_en) -> listings_ja_ko_ru.csv
import csv, json
from openai import OpenAI
llm = OpenAI()
GLOSSARY = "Brand names stay in Latin letters. 'Stainless steel' = ステンレス / 스테인리스 / нержавеющая сталь."
rows_out = []
for row in csv.DictReader(open("/opt/jobs/in/products.csv", encoding="utf-8")):
r = llm.chat.completions.create(model="gpt-4o-mini",
response_format={"type": "json_object"},
messages=[{"role": "system", "content": "You write marketplace listings. " + GLOSSARY},
{"role": "user", "content": "Return JSON with keys ja, ko, ru, each {title, desc}, "
"natural local style, no claims not present in the source:\n" + json.dumps(row, ensure_ascii=False)}])
t = json.loads(r.choices[0].message.content)
rows_out.append({"sku": row["sku"], **{f"{l}_{k}": t[l][k] for l in ("ja", "ko", "ru") for k in ("title", "desc")}})
with open("/opt/jobs/out/listings_ja_ko_ru.csv", "w", newline="", encoding="utf-8") as f:
w = csv.DictWriter(f, fieldnames=rows_out[0].keys()); w.writeheader(); w.writerows(rows_out)
Let a native speaker spot-check new categories, and keep the glossary in Git so terms stay consistent across all marketplaces.
Workflow 3: monitor your own listings
# /opt/jobs/prices.py - check YOUR OWN listings through your store's API
import os, requests
r = requests.get("https://shop.example.com/api/products",
headers={"Authorization": f"Bearer {os.environ['SHOP_API_TOKEN']}"}, timeout=20)
alerts = [f"{p['sku']}: price {p['price']} below floor {p['min_price']}"
for p in r.json()["products"] if float(p["price"]) < float(p["min_price"])]
if alerts:
requests.post(os.environ["SLACK_WEBHOOK"], json={"text": "\n".join(alerts)}, timeout=15)
Schedule everything
# crontab -u jobs -e (server time zone: timedatectl set-timezone Asia/Tokyo)
SHELL=/bin/bash
30 7 * * 1-5 set -a; . /opt/jobs/.env; /opt/jobs/venv/bin/python /opt/jobs/digest.py >> /opt/jobs/logs/digest.log 2>&1
0 2 * * * set -a; . /opt/jobs/.env; /opt/jobs/venv/bin/python /opt/jobs/translate.py >> /opt/jobs/logs/translate.log 2>&1
*/30 * * * * set -a; . /opt/jobs/.env; /opt/jobs/venv/bin/python /opt/jobs/prices.py >> /opt/jobs/logs/prices.log 2>&1
Prefer n8n? The same jobs map to n8n nodes: Schedule Trigger → RSS Read or HTTP Request → OpenAI / Anthropic → Slack or Google Sheets. Run n8n in Docker bound to 127.0.0.1 behind an HTTPS reverse proxy.
Connect Tokyo and Moscow safely
Move finished files from the AI server to the Russian-market server over SSH, and open SSH only to known IPs.
# On the Tokyo VPS (203.0.113.10): push finished files to the Moscow VPS after translation
15 3 * * * rsync -az -e "ssh -i /home/jobs/.ssh/moscow_ed25519" /opt/jobs/out/ [email protected]:/opt/feed/in/
# On the Moscow VPS (198.51.100.20): allow SSH only from Tokyo and your office
ufw default deny incoming
ufw allow from 203.0.113.10 to any port 22 proto tcp
ufw allow from 198.51.100.50 to any port 22 proto tcp
ufw allow 443/tcp
ufw enable
Because JUSTG gives every VPS a fixed native IP, firewall allowlists like this stay valid; there is no shared proxy pool whose addresses change underneath you.
Security: secrets, firewall and updates
Automation servers hold API keys and store tokens, so treat them like production systems.
- Keep keys in
/opt/jobs/.env(mode 600) or n8n Credentials; never in scripts, crontab lines or Git. - Use separate API keys per workflow with spending limits, so a runaway loop cannot drain the budget.
- SSH: keys only,
PermitRootLogin no, fail2ban, andufw default deny incoming. - Do not expose n8n's editor to the internet without HTTPS and strong login; better, restrict it to your office IP.
- Enable
unattended-upgradesand update Docker images monthly. - Back up
/opt/jobsand n8n data off-server; log every run and alert on failures.
Resource sizing
API-based workflows need little CPU; RAM grows with n8n, databases and parallel jobs.
| Workload | Suggested plan | Notes |
|---|---|---|
| A few cron Python jobs, API-only | 1 GB RAM | The 512 MB entry plan suits a single light script or a Moscow file receiver |
| n8n with 10-30 workflows | 2-4 GB RAM | Add Postgres for execution history |
| n8n + RAG/vector database + many parallel translations | 4-8 GB RAM | Batch jobs at night to stay under API rate limits |
| Small local model for redaction or classification (CPU) | 8 GB+ RAM | No GPUs are offered; expect a few tokens per second |
Which JUSTG plan fits
Pick the location by what the job calls and who it serves, then size by the table above.
- JUSTG Tokyo Cloud VPS: AI workflows for Japan and the wider region, and the default "AI brain" for multi-country setups.
- JUSTG Seoul Cloud VPS: AI workflows for Korean marketplaces and teams, on the KT network.
- JUSTG Moscow Cloud VPS: Russian-market jobs that do not call blocked AI APIs, with a native Russian IP and CN2 GIA to mainland China; for heavy workloads, consider the JUSTG Moscow Dedicated Server from $299/mo.
Custom configurations (CPU, RAM, disk, bandwidth, extra IPs or IP blocks) are available on request: contact sales via ticket for a custom quote. See also our AI VPS overview.
FAQ
Which VPS location should I use to run n8n with the OpenAI API?
Use Tokyo, Japan or Seoul, South Korea, where OpenAI, Claude and Gemini APIs are officially available. JUSTG Tokyo and Seoul Cloud VPS start at $19.99/mo with a native local IP, enough for n8n and dozens of workflows.
Can I run AI translation jobs on a Moscow VPS?
Not with OpenAI, Claude or Gemini, because these APIs are not available in Russia. Run the AI step on a JUSTG Tokyo or Seoul VPS and use a JUSTG Moscow Cloud VPS only for Russian-market tasks that do not call these APIs, such as receiving prepared files or hosting a storefront.
Is it legal to scrape websites with an AI workflow?
It depends on the site's terms, robots.txt and local law. Prefer official RSS feeds, public or seller APIs and licensed data, keep request rates low, and avoid collecting personal data; this guide only covers scraping-free workflows.
How much RAM do I need for AI automation on a VPS?
Script-only jobs that call cloud APIs run in 1 GB, n8n needs 2-4 GB, and adding a vector database or a small CPU model needs 4-8 GB or more. JUSTG cloud VPS plans scale from 512 MB to 24 GB RAM.
Start automating
A single always-on VPS can replace hours of daily copy, translate and check work. Deploy a JUSTG Tokyo Cloud VPS, a JUSTG Seoul Cloud VPS or a JUSTG Moscow Cloud VPS for your market, and contact our 24/7 support via ticket if you need help designing the setup.