惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
D
Docker
GbyAI
GbyAI
Y
Y Combinator Blog
C
Check Point Blog
M
MIT News - Artificial intelligence
Martin Fowler
Martin Fowler
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Blog — PlanetScale
Blog — PlanetScale
P
Palo Alto Networks Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V
Vulnerabilities – Threatpost
I
InfoQ
Simon Willison's Weblog
Simon Willison's Weblog
博客园_首页
T
Threat Research - Cisco Blogs
J
Java Code Geeks
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Register - Security
The Register - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
阮一峰的网络日志
阮一峰的网络日志
O
OpenAI News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recent Announcements
Recent Announcements
Forbes - Security
Forbes - Security
AWS News Blog
AWS News Blog
雷峰网
雷峰网
博客园 - 三生石上(FineUI控件)
S
Security Affairs
H
Heimdal Security Blog
Engineering at Meta
Engineering at Meta
T
Troy Hunt's Blog
T
Tenable Blog
MongoDB | Blog
MongoDB | Blog
H
Hacker News: Front Page
IT之家
IT之家
N
News and Events Feed by Topic
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
S
Secure Thoughts
U
Unit 42
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
NISL@THU
NISL@THU
T
The Blog of Author Tim Ferriss

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Personal AI Assistant - Setting Up Free Cloud Server - The Complete Guide
AK DevCraft · 2026-05-18 · via DEV Community

Introduction

This is Part 2 of the Zero Dollar AI Assistant series. Part 1- Running a Personal AI Assistant for $0 - Architecture covers the full stack and why it works.

AWS, Google Cloud, and Azure have a free tier. However, they all have one thing in common: a clock ticking. Twelve months, then the bill starts.

Oracle Cloud is different. Their Always Free Tier has no expiry date. The server you provision today will still be running and free, as long as your account stays active. The benefit also includes the block storage capacity and its free tier. That's the foundation this entire stack is built on.

This article walks you through setting up that foundation: creating a properly configured Oracle Cloud account, provisioning an ARM instance with the right specs, and solving every gotcha along the way.

Understanding Oracle's Always Free Tier

Before touching the console, know what you're getting into:

Always Free compute:

  • Up to 4 ARM CPU cores and 24GB RAM total across ARM instances — permanently free
  • 2x VM.Standard.E2.1.Micro (1 OCPU, 1GB RAM each) — also permanently free x86 instances, but avoid these for this stack — 1GB RAM is far too tight for Ollama
  • These are not trial credits. They don't expire.

Always Free storage:

  • 200GB total block storage
  • Enough for your server's boot volume with room to spare

What costs money:

  • Going beyond 4 OCPU / 24GB RAM on ARM
  • Reserved public IPs that aren't attached to a running instance
  • Outbound data beyond 10TB/month — in practice, a personal AI assistant will never get close to this

The shape you want is VM.Standard.A1.Flex — Oracle's ARM instance. Use the full free allocation: 4 OCPU and 24GB RAM. This gives Ollama maximum headroom and keeps the system responsive under load.

Account Setup

Free Tier vs Pay As You Go

Start by creating an Oracle Cloud account at cloud.oracle.com. You'll be on the Free Tier by default.

Here's the catch: ARM capacity on the free tier is frequently exhausted. You'll often see "Out of Capacity" errors across all availability domains. The fix is upgrading to Pay As You Go (PAYG).

PAYG sounds alarming, but it isn't:

  • Always Free resources remain free — your ARM instance still costs $0
  • You only pay if you exceed free tier limits
  • Oracle places a temporary $100 authorization hold on your card when you upgrade — this is a verification hold, not a charge, and disappears within 3-5 business days

Upgrade via: Billing → Upgrade and Manage Payment

Set a budget alert immediately after upgrading:

  • Billing → Budgets → Create Budget
  • Amount: $1
  • Alert at 50% and 100%

This ensures you're notified before any real spend happens. In practice, for this setup, you'll never see the alert trigger.

Creating the VCN

Before launching an instance, you need a Virtual Cloud Network (VCN) with internet connectivity. This is where most people hit their first obstacle.

The critical mistake to avoid: Don't use the blue "Create VCN" button on the VCN list page. It creates a bare VCN with nothing attached — no subnets, no internet gateway, no routing. You'll end up with an instance that has no public IP and no way to SSH in.

The correct path — VCN Wizard:

Option A — From the Console home page:

  • Look for "Set up a network with a wizard" in the build section
  • Click it

quick-wizard-home

Option B — From the VCN list page:

  • Hamburger (☰) → NetworkingVirtual Cloud Networks
  • Look for "Start VCN Wizard" — it's separate from the "Create VCN" button

quick-wizard-ham

Either way, select "Create VCN with Internet Connectivity" and proceed. Give it a name (e.g., openclaw-vcn works), leave CIDR defaults, and click through.

The wizard automatically creates:

  • Public subnet with internet routing
  • Private subnet
  • Internet Gateway
  • NAT Gateway
  • Route tables and security lists — all pre-wired

Add SSH Access

After the VCN is created:

  1. Go into your VCN → Subnets → click the Public Subnet
  2. Click Default Security ListAdd Ingress Rules
  3. Add:
    • Source CIDR: 0.0.0.0/0
    • Protocol: TCP
    • Destination port: 22
  4. Save

Provisioning the Instance

Hamburger (☰) → Compute → Instances → Create Instance

Work through each section:

Image

Click Change Image and look carefully. Oracle lists ARM and x86 variants of Ubuntu side by side with nearly identical names:

  • Canonical Ubuntu 24.04 → x86 ❌
  • Canonical Ubuntu 24.04 Minimal aarch64 → ARM ✅

The aarch64 or Minimal aarch64 variant is what you want. Selecting the wrong one produces an "incompatible settings" error when combined with the ARM shape.

Recommended: Canonical Ubuntu 24.04 Minimal aarch64

The Minimal image strips unnecessary packages — smaller attack surface, less memory overhead, cleaner slate. Install any tools you need explicitly.

Shape

  • Shape: VM.Standard.A1.Flex
  • OCPUs: 4
  • Memory: 24GB

If you see "Out of Capacity":

  • Try each availability domain (AD-1, AD-2, AD-3)
  • Set fault domain to "No preference."
  • Try a different region
  • If all else fails, this is the primary reason to upgrade to PAYG — capacity is significantly more available

Networking

  • Select your openclaw-vcn
  • Select the public subnet
  • Check "Assign a public IPv4 address" ← easy to miss, critical

Boot Volume

Check "Specify a custom boot volume size" and set it to 100GB.

The default 46.6GB disappears quickly once Ubuntu, Node.js, Ollama, and a 5GB model are installed. 100GB stays well within your 200GB free storage allocation.

Leave in-transit encryption and confidential computing unchecked — both add overhead with no meaningful benefit for this use case.

SSH Keys

Generate a key pair or upload your existing public key. Alternatively, you can download and save the private key — you'll need it every time you SSH in.

Click Create and wait 2-3 minutes for provisioning.🕛

Initial Server Configuration

Use the previously configured SSH key to SSH into the Oracle cloud server you just provisioned. SSH from your laptop. Get the Public IP from your instance provisioned.

SSH in:

chmod 400 ~/.ssh/id_rsa
ssh -i ~/.ssh/id_rsa ubuntu@YOUR_INSTANCE_PUBLIC_IP

Enter fullscreen mode Exit fullscreen mode

NOTE: Run these steps in order — don't skip them

System Update

sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential curl wget tmux

Enter fullscreen mode Exit fullscreen mode

Install tmux immediately — you'll use it for every long-running command. Starting a download without tmux and having SSH disconnect is a painful lesson.

Disable IPv6

Oracle Cloud's network doesn't support IPv6 for outbound connections in most configurations. OpenClaw's Telegram integration will repeatedly timeout and fail if IPv6 is active:

echo 'net.ipv6.conf.all.disable_ipv6 = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6 = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Enter fullscreen mode Exit fullscreen mode

Verify it worked:

curl -6 https://api.telegram.org 2>&1 | head -3
# Should fail immediately — that's correct
curl -4 https://api.telegram.org 2>&1 | head -3
# Should succeed

Enter fullscreen mode Exit fullscreen mode

Install Node.js

OpenClaw requires Node.js 22+. Install via NVM for flexibility:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install 22
nvm use 22
nvm alias default 22
node --version  # should show v22.x.x

Enter fullscreen mode Exit fullscreen mode

Also install system-level Node (used by OpenClaw's systemd service):

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs

Enter fullscreen mode Exit fullscreen mode

Useful Aliases

echo "alias clearmem=\"sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'\"" >> ~/.bashrc
source ~/.bashrc

Enter fullscreen mode Exit fullscreen mode

clearmem clears the page cache when memory gets tight. You'll use it occasionally, even on 18GB RAM.

Verifying the Setup

Before moving on to Ollama and OpenClaw installation, confirm everything is healthy:

# Verify ARM architecture
uname -m
# Expected: aarch64

# Verify disk space
df -h
# /dev/sda1 should show ~96GB available

# Verify Node.js
node --version
# Should show v22.x.x

# Verify IPv6 is disabled
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
# Should show: 1

# Verify internet connectivity
curl -s https://api.telegram.org | head -3
# Should respond

Enter fullscreen mode Exit fullscreen mode

If all five pass, your foundation is set up. You're ready for Part 3 — installing Ollama and picking the right model for your hardware.

Common Issues and Fixes

  • This instance has incompatible settings
    You selected the x86 Ubuntu image with the ARM shape. Go back to image selection and choose the aarch64 variant.

  • Out of Capacity for VM.Standard.A1.Flex
    Try all three ADs, set fault domain to "No preference", and consider upgrading to PAYG. Capacity is the single most common blocker for new Oracle free-tier accounts.

  • Instance created but no public IP showing
    The public subnet wasn't selected during creation, or "Assign a public IPv4 address" wasn't checked. Easiest fix: terminate and recreate with the correct networking settings.

  • SSH connection refused
    The SSH ingress rule wasn't added to the security list. Go to VCN → Public Subnet → Default Security List → add TCP ingress on port 22.

  • SSH times out after a few minutes of inactivity
    Add to ~/.ssh/config on your local machine:

Host *
  ServerAliveInterval 60
  ServerAliveCountMax 10

Enter fullscreen mode Exit fullscreen mode

What's Next

With your Oracle Cloud instance running, IPv6 disabled, and Node.js installed, the infrastructure layer is done.

Part 3 of this zero-dollar AI Assistant series will cover installing Ollama on ARM, choosing the right model for CPU inference, managing disk space with large model files, and the hybrid local + Gemini fallback architecture that makes the whole thing actually usable.

This article is the second in a five-part series:

  1. Running a Personal AI Assistant for $0 - Architecture
  2. Setting Up Free Cloud Server — VCN, ARM instances, static IPs, the gotchas ← you are here
  3. Running Ollama on ARM — model selection, disk management, CPU inference reality
  4. Installing OpenClaw on Linux — avoiding every trap
  5. The Complete Setup — Telegram, Gemini fallback, end-to-end testing

Stay tuned, all links will be updated as articles are published.

If you have reached this point, I have made a satisfactory effort to keep you reading. Please be kind enough to leave any comments or share any corrections.

My Other Blogs: