[{"data":1,"prerenderedAt":939},["ShallowReactive",2],{"navigation_docs":3,"-deployment-vps-installation":218,"-deployment-vps-installation-surround":934},[4,20,45,75,95,105,140,168,198],{"title":5,"path":6,"stem":7,"children":8,"page":19},"Introduction","\u002Fintroduction","1.introduction",[9,14],{"title":10,"path":11,"stem":12,"icon":13},"What is GO?","\u002Fintroduction\u002Fwhat-is-go","1.introduction\u002F1.what-is-go","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Features","\u002Fintroduction\u002Ffeatures","1.introduction\u002F2.features","i-lucide-sparkles",false,{"title":21,"path":22,"stem":23,"children":24,"page":19},"Getting Started","\u002Fgetting-started","2.getting-started",[25,30,35,40],{"title":26,"path":27,"stem":28,"icon":29},"Installation","\u002Fgetting-started\u002Finstallation","2.getting-started\u002F1.installation","i-lucide-download",{"title":31,"path":32,"stem":33,"icon":34},"Configuration","\u002Fgetting-started\u002Fconfiguration","2.getting-started\u002F2.configuration","i-lucide-settings",{"title":36,"path":37,"stem":38,"icon":39},"First Setup","\u002Fgetting-started\u002Ffirst-setup","2.getting-started\u002F3.first-setup","i-lucide-rocket",{"title":41,"path":42,"stem":43,"icon":44},"Updating","\u002Fgetting-started\u002Fupdating","2.getting-started\u002F4.updating","i-lucide-refresh-cw",{"title":46,"icon":19,"path":47,"stem":48,"children":49,"page":19},"User Guide","\u002Fuser-guide","3.user-guide",[50,55,60,65,70],{"title":51,"path":52,"stem":53,"icon":54},"Creating a Short Link","\u002Fuser-guide\u002Fcreating-a-short-link","3.user-guide\u002F1.creating-a-short-link","i-lucide-link",{"title":56,"path":57,"stem":58,"icon":59},"Expiration","\u002Fuser-guide\u002Fexpiration","3.user-guide\u002F2.expiration","i-lucide-clock",{"title":61,"path":62,"stem":63,"icon":64},"Renewing Links","\u002Fuser-guide\u002Frenewing-links","3.user-guide\u002F3.renewing-links","i-lucide-repeat",{"title":66,"path":67,"stem":68,"icon":69},"Dashboard","\u002Fuser-guide\u002Fdashboard","3.user-guide\u002F4.dashboard","i-lucide-layout-dashboard",{"title":71,"path":72,"stem":73,"icon":74},"Analytics","\u002Fuser-guide\u002Fanalytics","3.user-guide\u002F5.analytics","i-lucide-bar-chart-3",{"title":76,"path":77,"stem":78,"children":79,"page":19},"Authentication","\u002Fauthentication","4.authentication",[80,85,90],{"title":81,"path":82,"stem":83,"icon":84},"Email Login","\u002Fauthentication\u002Femail-login","4.authentication\u002F1.email-login","i-lucide-mail",{"title":86,"path":87,"stem":88,"icon":89},"Google Login","\u002Fauthentication\u002Fgoogle-login","4.authentication\u002F2.google-login","i-lucide-globe",{"title":91,"path":92,"stem":93,"icon":94},"Firebase Setup","\u002Fauthentication\u002Ffirebase-setup","4.authentication\u002F3.firebase-setup","i-simple-icons-firebase",{"title":96,"path":97,"stem":98,"children":99,"page":19},"Captcha","\u002Fcaptcha","5.captcha",[100],{"title":101,"path":102,"stem":103,"icon":104},"Cloudflare Turnstile","\u002Fcaptcha\u002Fcloudflare-turnstile","5.captcha\u002F1.cloudflare-turnstile","i-simple-icons-cloudflare",{"title":106,"path":107,"stem":108,"children":109,"page":19},"Administration","\u002Fadministration","6.administration",[110,115,120,125,130,135],{"title":111,"path":112,"stem":113,"icon":114},"Admin Panel","\u002Fadministration\u002Fadmin-panel","6.administration\u002F1.admin-panel","i-lucide-shield",{"title":116,"path":117,"stem":118,"icon":119},"Users","\u002Fadministration\u002Fusers","6.administration\u002F2.users","i-lucide-users",{"title":121,"path":122,"stem":123,"icon":124},"Links","\u002Fadministration\u002Flinks","6.administration\u002F3.links","i-lucide-link-2",{"title":126,"path":127,"stem":128,"icon":129},"Reports","\u002Fadministration\u002Freports","6.administration\u002F4.reports","i-lucide-flag",{"title":131,"path":132,"stem":133,"icon":134},"Bans & Timeouts","\u002Fadministration\u002Fbans-and-timeouts","6.administration\u002F5.bans-and-timeouts","i-lucide-user-x",{"title":136,"path":137,"stem":138,"icon":139},"Audit Logs","\u002Fadministration\u002Faudit-logs","6.administration\u002F6.audit-logs","i-lucide-scroll",{"title":141,"path":142,"stem":143,"children":144,"page":19},"Deployment","\u002Fdeployment","7.deployment",[145,150,155,160,165],{"title":146,"path":147,"stem":148,"icon":149},"VPS Installation","\u002Fdeployment\u002Fvps-installation","7.deployment\u002F1.vps-installation","i-lucide-server",{"title":151,"path":152,"stem":153,"icon":154},"Environment Variables","\u002Fdeployment\u002Fenvironment-variables","7.deployment\u002F2.environment-variables","i-lucide-sliders",{"title":156,"path":157,"stem":158,"icon":159},"Cloudflare Tunnel","\u002Fdeployment\u002Fcloudflare-tunnel","7.deployment\u002F3.cloudflare-tunnel","i-lucide-network",{"title":161,"path":162,"stem":163,"icon":164},"Systemd","\u002Fdeployment\u002Fsystemd","7.deployment\u002F4.systemd","i-lucide-cpu",{"title":41,"path":166,"stem":167,"icon":44},"\u002Fdeployment\u002Fupdating","7.deployment\u002F5.updating",{"title":169,"path":170,"stem":171,"children":172,"page":19},"Developer","\u002Fdeveloper","8.developer",[173,178,183,188,193],{"title":174,"path":175,"stem":176,"icon":177},"Architecture","\u002Fdeveloper\u002Farchitecture","8.developer\u002F1.architecture","i-lucide-box",{"title":179,"path":180,"stem":181,"icon":182},"API Architecture","\u002Fdeveloper\u002Fapi","8.developer\u002F2.api","i-lucide-code-xml",{"title":184,"path":185,"stem":186,"icon":187},"Database","\u002Fdeveloper\u002Fdatabase","8.developer\u002F3.database","i-lucide-database",{"title":189,"path":190,"stem":191,"icon":192},"Development","\u002Fdeveloper\u002Fdevelopment","8.developer\u002F4.development","i-lucide-terminal",{"title":194,"path":195,"stem":196,"icon":197},"Building Releases","\u002Fdeveloper\u002Fbuilding-releases","8.developer\u002F5.building-releases","i-lucide-package-check",{"title":199,"path":200,"stem":201,"children":202,"page":19},"Reference","\u002Freference","9.reference",[203,208,213],{"title":204,"path":205,"stem":206,"icon":207},"Configuration Reference","\u002Freference\u002Fconfiguration","9.reference\u002F1.configuration","i-lucide-file-cog",{"title":209,"path":210,"stem":211,"icon":212},"API Reference","\u002Freference\u002Fapi-reference","9.reference\u002F2.api-reference","i-lucide-webhook",{"title":214,"path":215,"stem":216,"icon":217},"Changelog","\u002Freference\u002Fchangelog","9.reference\u002F3.changelog","i-lucide-history",{"id":219,"title":146,"body":220,"description":925,"extension":926,"links":927,"meta":928,"navigation":929,"path":147,"seo":930,"stem":148,"__hash__":933},"docs\u002F7.deployment\u002F1.vps-installation.md",{"type":221,"value":222,"toc":913},"minimark",[223,227,231,234,239,247,257,259,263,855,857,861,864,902,909],[224,225,146],"h1",{"id":226},"vps-installation",[228,229,230],"p",{},"GO Shortener is engineered for production deployment on lightweight Linux virtual private servers (e.g., 1 GB RAM Ubuntu instances) running alongside other services such as File Browser, Nginx, or Docker containers without resource contention.",[232,233],"hr",{},[235,236,238],"h2",{"id":237},"production-filesystem-layout","Production Filesystem Layout",[228,240,241,242,246],{},"All application artifacts are consolidated within ",[243,244,245],"code",{},"\u002Froot\u002FGo-shortner",":",[248,249,255],"pre",{"className":250,"code":252,"language":253,"meta":254},[251],"language-text","\u002Froot\u002FGo-shortner\u002F\n├── go-shortener          # Standalone Go executable (with embedded frontend)\n├── .env                  # Environment configuration & secrets (chmod 600)\n├── uninstall.sh          # One-click uninstaller script\n└── data\u002F\n    └── go.sqlite         # SQLite database file (WAL mode enabled)\n","text","",[243,256,252],{"__ignoreMap":254},[232,258],{},[235,260,262],{"id":261},"step-by-step-deployment","Step-by-Step Deployment",[264,265,266,271,278,299,303,306,335,339,350,580,584,591,718,722,728,822,826,829],"steps",{},[267,268,270],"h3",{"id":269},"_1-connect-to-your-vps","1. Connect to Your VPS",[228,272,273,274,277],{},"Open a terminal and connect to your server as ",[243,275,276],{},"root"," via SSH:",[248,279,284],{"className":280,"code":281,"filename":282,"language":283,"meta":254,"style":254},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ssh root@your-vps-ip\n","Terminal","bash",[243,285,286],{"__ignoreMap":254},[287,288,291,295],"span",{"class":289,"line":290},"line",1,[287,292,294],{"class":293},"sBMFI","ssh",[287,296,298],{"class":297},"sfazB"," root@your-vps-ip\n",[267,300,302],{"id":301},"_2-prepare-directory-and-permissions","2. Prepare Directory and Permissions",[228,304,305],{},"Create the root directories for the application and database storage:",[248,307,309],{"className":280,"code":308,"filename":282,"language":283,"meta":254,"style":254},"mkdir -p \u002Froot\u002FGo-shortner\u002Fdata\nchmod 700 \u002Froot\u002FGo-shortner\n",[243,310,311,322],{"__ignoreMap":254},[287,312,313,316,319],{"class":289,"line":290},[287,314,315],{"class":293},"mkdir",[287,317,318],{"class":297}," -p",[287,320,321],{"class":297}," \u002Froot\u002FGo-shortner\u002Fdata\n",[287,323,325,328,332],{"class":289,"line":324},2,[287,326,327],{"class":293},"chmod",[287,329,331],{"class":330},"sbssI"," 700",[287,333,334],{"class":297}," \u002Froot\u002FGo-shortner\n",[267,336,338],{"id":337},"_3-fetch-the-latest-standalone-binary","3. Fetch the Latest Standalone Binary",[228,340,341,342,345,346,349],{},"Determine your CPU architecture (",[243,343,344],{},"x86_64"," or ",[243,347,348],{},"aarch64",") and download the release binary:",[248,351,353],{"className":280,"code":352,"filename":282,"language":283,"meta":254,"style":254},"# Detect architecture\nARCH=$(uname -m)\nif [ \"$ARCH\" = \"x86_64\" ]; then\n  BINARY=\"go-shortener-linux-amd64\"\nelif [ \"$ARCH\" = \"aarch64\" ] || [ \"$ARCH\" = \"arm64\" ]; then\n  BINARY=\"go-shortener-linux-arm64\"\nelse\n  echo \"Unsupported architecture: $ARCH\" && exit 1\nfi\n\n# Download binary into \u002Froot\u002FGo-shortner\u002F\ncurl -L -o \u002Froot\u002FGo-shortner\u002Fgo-shortener \"https:\u002F\u002Fgithub.com\u002FItsARCn\u002FGo-shortner\u002Freleases\u002Flatest\u002Fdownload\u002F$BINARY\"\nchmod +x \u002Froot\u002FGo-shortner\u002Fgo-shortener\n",[243,354,355,361,380,414,431,480,494,500,525,531,538,544,569],{"__ignoreMap":254},[287,356,357],{"class":289,"line":290},[287,358,360],{"class":359},"sHwdD","# Detect architecture\n",[287,362,363,367,371,374,377],{"class":289,"line":324},[287,364,366],{"class":365},"sTEyZ","ARCH",[287,368,370],{"class":369},"sMK4o","=$(",[287,372,373],{"class":293},"uname",[287,375,376],{"class":297}," -m",[287,378,379],{"class":369},")\n",[287,381,383,387,390,393,396,399,402,404,406,408,411],{"class":289,"line":382},3,[287,384,386],{"class":385},"s7zQu","if",[287,388,389],{"class":369}," [",[287,391,392],{"class":369}," \"",[287,394,395],{"class":365},"$ARCH",[287,397,398],{"class":369},"\"",[287,400,401],{"class":369}," =",[287,403,392],{"class":369},[287,405,344],{"class":297},[287,407,398],{"class":369},[287,409,410],{"class":369}," ];",[287,412,413],{"class":385}," then\n",[287,415,417,420,423,425,428],{"class":289,"line":416},4,[287,418,419],{"class":365},"  BINARY",[287,421,422],{"class":369},"=",[287,424,398],{"class":369},[287,426,427],{"class":297},"go-shortener-linux-amd64",[287,429,430],{"class":369},"\"\n",[287,432,434,437,439,441,443,445,447,449,451,453,456,459,461,463,465,467,469,471,474,476,478],{"class":289,"line":433},5,[287,435,436],{"class":385},"elif",[287,438,389],{"class":369},[287,440,392],{"class":369},[287,442,395],{"class":365},[287,444,398],{"class":369},[287,446,401],{"class":369},[287,448,392],{"class":369},[287,450,348],{"class":297},[287,452,398],{"class":369},[287,454,455],{"class":369}," ]",[287,457,458],{"class":369}," ||",[287,460,389],{"class":369},[287,462,392],{"class":369},[287,464,395],{"class":365},[287,466,398],{"class":369},[287,468,401],{"class":369},[287,470,392],{"class":369},[287,472,473],{"class":297},"arm64",[287,475,398],{"class":369},[287,477,410],{"class":369},[287,479,413],{"class":385},[287,481,483,485,487,489,492],{"class":289,"line":482},6,[287,484,419],{"class":365},[287,486,422],{"class":369},[287,488,398],{"class":369},[287,490,491],{"class":297},"go-shortener-linux-arm64",[287,493,430],{"class":369},[287,495,497],{"class":289,"line":496},7,[287,498,499],{"class":385},"else\n",[287,501,503,507,509,512,514,516,519,522],{"class":289,"line":502},8,[287,504,506],{"class":505},"s2Zo4","  echo",[287,508,392],{"class":369},[287,510,511],{"class":297},"Unsupported architecture: ",[287,513,395],{"class":365},[287,515,398],{"class":369},[287,517,518],{"class":369}," &&",[287,520,521],{"class":505}," exit",[287,523,524],{"class":330}," 1\n",[287,526,528],{"class":289,"line":527},9,[287,529,530],{"class":385},"fi\n",[287,532,534],{"class":289,"line":533},10,[287,535,537],{"emptyLinePlaceholder":536},true,"\n",[287,539,541],{"class":289,"line":540},11,[287,542,543],{"class":359},"# Download binary into \u002Froot\u002FGo-shortner\u002F\n",[287,545,547,550,553,556,559,561,564,567],{"class":289,"line":546},12,[287,548,549],{"class":293},"curl",[287,551,552],{"class":297}," -L",[287,554,555],{"class":297}," -o",[287,557,558],{"class":297}," \u002Froot\u002FGo-shortner\u002Fgo-shortener",[287,560,392],{"class":369},[287,562,563],{"class":297},"https:\u002F\u002Fgithub.com\u002FItsARCn\u002FGo-shortner\u002Freleases\u002Flatest\u002Fdownload\u002F",[287,565,566],{"class":365},"$BINARY",[287,568,430],{"class":369},[287,570,572,574,577],{"class":289,"line":571},13,[287,573,327],{"class":293},[287,575,576],{"class":297}," +x",[287,578,579],{"class":297}," \u002Froot\u002FGo-shortner\u002Fgo-shortener\n",[267,581,583],{"id":582},"_4-create-the-production-environment-file","4. Create the Production Environment File",[228,585,586,587,590],{},"Generate a secure ",[243,588,589],{},".env"," file with a strong random 32-byte secret:",[248,592,594],{"className":280,"code":593,"filename":282,"language":283,"meta":254,"style":254},"cat \u003C\u003C EOF > \u002Froot\u002FGo-shortner\u002F.env\nPORT=3000\nHOST=127.0.0.1\nBASE_URL=https:\u002F\u002Fgo.arcn.online\nDB_PATH=\u002Froot\u002FGo-shortner\u002Fdata\u002Fgo.sqlite\nJWT_SECRET=$(openssl rand -hex 32)\nSESSION_DURATION_HOURS=72\n\nANONYMOUS_DAILY_QUOTA=15\nREGISTERED_MONTHLY_QUOTA=100\nANONYMOUS_MAX_EXPIRATION_DAYS=7\nREGISTERED_MAX_EXPIRATION_DAYS=365\n\nTURNSTILE_ENABLED=false\nEOF\n\n# Restrict file permissions strictly to root\nchmod 600 \u002Froot\u002FGo-shortner\u002F.env\n",[243,595,596,613,618,623,628,633,652,657,661,666,671,676,681,685,691,697,702,708],{"__ignoreMap":254},[287,597,598,601,604,607,610],{"class":289,"line":290},[287,599,600],{"class":293},"cat",[287,602,603],{"class":369}," \u003C\u003C",[287,605,606],{"class":369}," EOF",[287,608,609],{"class":369}," >",[287,611,612],{"class":297}," \u002Froot\u002FGo-shortner\u002F.env\n",[287,614,615],{"class":289,"line":324},[287,616,617],{"class":297},"PORT=3000\n",[287,619,620],{"class":289,"line":382},[287,621,622],{"class":297},"HOST=127.0.0.1\n",[287,624,625],{"class":289,"line":416},[287,626,627],{"class":297},"BASE_URL=https:\u002F\u002Fgo.arcn.online\n",[287,629,630],{"class":289,"line":433},[287,631,632],{"class":297},"DB_PATH=\u002Froot\u002FGo-shortner\u002Fdata\u002Fgo.sqlite\n",[287,634,635,638,641,644,647,650],{"class":289,"line":482},[287,636,637],{"class":297},"JWT_SECRET=",[287,639,640],{"class":369},"$(",[287,642,643],{"class":293},"openssl",[287,645,646],{"class":297}," rand -hex ",[287,648,649],{"class":330},"32",[287,651,379],{"class":369},[287,653,654],{"class":289,"line":496},[287,655,656],{"class":297},"SESSION_DURATION_HOURS=72\n",[287,658,659],{"class":289,"line":502},[287,660,537],{"emptyLinePlaceholder":536},[287,662,663],{"class":289,"line":527},[287,664,665],{"class":297},"ANONYMOUS_DAILY_QUOTA=15\n",[287,667,668],{"class":289,"line":533},[287,669,670],{"class":297},"REGISTERED_MONTHLY_QUOTA=100\n",[287,672,673],{"class":289,"line":540},[287,674,675],{"class":297},"ANONYMOUS_MAX_EXPIRATION_DAYS=7\n",[287,677,678],{"class":289,"line":546},[287,679,680],{"class":297},"REGISTERED_MAX_EXPIRATION_DAYS=365\n",[287,682,683],{"class":289,"line":571},[287,684,537],{"emptyLinePlaceholder":536},[287,686,688],{"class":289,"line":687},14,[287,689,690],{"class":297},"TURNSTILE_ENABLED=false\n",[287,692,694],{"class":289,"line":693},15,[287,695,696],{"class":369},"EOF\n",[287,698,700],{"class":289,"line":699},16,[287,701,537],{"emptyLinePlaceholder":536},[287,703,705],{"class":289,"line":704},17,[287,706,707],{"class":359},"# Restrict file permissions strictly to root\n",[287,709,711,713,716],{"class":289,"line":710},18,[287,712,327],{"class":293},[287,714,715],{"class":330}," 600",[287,717,612],{"class":297},[267,719,721],{"id":720},"_5-install-the-systemd-service","5. Install the systemd Service",[228,723,724,725,246],{},"Create the service unit file at ",[243,726,727],{},"\u002Fetc\u002Fsystemd\u002Fsystem\u002Fgo-shortener.service",[248,729,733],{"className":730,"code":731,"filename":727,"language":732,"meta":254,"style":254},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[Unit]\nDescription=GO Shortener - Minimal High-Performance URL Shortener\nAfter=network.target\n\n[Service]\nType=simple\nUser=root\nWorkingDirectory=\u002Froot\u002FGo-shortner\nExecStart=\u002Froot\u002FGo-shortner\u002Fgo-shortener\nRestart=always\nRestartSec=3\nLimitNOFILE=65535\n\n# Hardening\nPrivateTmp=true\n\n[Install]\nWantedBy=multi-user.target\n","ini",[243,734,735,740,745,750,754,759,764,769,774,779,784,789,794,798,803,808,812,817],{"__ignoreMap":254},[287,736,737],{"class":289,"line":290},[287,738,739],{},"[Unit]\n",[287,741,742],{"class":289,"line":324},[287,743,744],{},"Description=GO Shortener - Minimal High-Performance URL Shortener\n",[287,746,747],{"class":289,"line":382},[287,748,749],{},"After=network.target\n",[287,751,752],{"class":289,"line":416},[287,753,537],{"emptyLinePlaceholder":536},[287,755,756],{"class":289,"line":433},[287,757,758],{},"[Service]\n",[287,760,761],{"class":289,"line":482},[287,762,763],{},"Type=simple\n",[287,765,766],{"class":289,"line":496},[287,767,768],{},"User=root\n",[287,770,771],{"class":289,"line":502},[287,772,773],{},"WorkingDirectory=\u002Froot\u002FGo-shortner\n",[287,775,776],{"class":289,"line":527},[287,777,778],{},"ExecStart=\u002Froot\u002FGo-shortner\u002Fgo-shortener\n",[287,780,781],{"class":289,"line":533},[287,782,783],{},"Restart=always\n",[287,785,786],{"class":289,"line":540},[287,787,788],{},"RestartSec=3\n",[287,790,791],{"class":289,"line":546},[287,792,793],{},"LimitNOFILE=65535\n",[287,795,796],{"class":289,"line":571},[287,797,537],{"emptyLinePlaceholder":536},[287,799,800],{"class":289,"line":687},[287,801,802],{},"# Hardening\n",[287,804,805],{"class":289,"line":693},[287,806,807],{},"PrivateTmp=true\n",[287,809,810],{"class":289,"line":699},[287,811,537],{"emptyLinePlaceholder":536},[287,813,814],{"class":289,"line":704},[287,815,816],{},"[Install]\n",[287,818,819],{"class":289,"line":710},[287,820,821],{},"WantedBy=multi-user.target\n",[267,823,825],{"id":824},"_6-enable-and-start-the-service","6. Enable and Start the Service",[228,827,828],{},"Reload systemd, enable the service to start automatically on system boot, and trigger startup:",[248,830,832],{"className":280,"code":831,"filename":282,"language":283,"meta":254,"style":254},"systemctl daemon-reload\nsystemctl enable --now go-shortener\n",[243,833,834,842],{"__ignoreMap":254},[287,835,836,839],{"class":289,"line":290},[287,837,838],{"class":293},"systemctl",[287,840,841],{"class":297}," daemon-reload\n",[287,843,844,846,849,852],{"class":289,"line":324},[287,845,838],{"class":293},[287,847,848],{"class":297}," enable",[287,850,851],{"class":297}," --now",[287,853,854],{"class":297}," go-shortener\n",[232,856],{},[235,858,860],{"id":859},"verifying-the-deployment","Verifying the Deployment",[228,862,863],{},"Inspect the service status and query the local health endpoint:",[248,865,867],{"className":280,"code":866,"filename":282,"language":283,"meta":254,"style":254},"# Inspect systemd status\nsystemctl status go-shortener\n\n# Health check\ncurl -s http:\u002F\u002F127.0.0.1:3000\u002Fapi\u002Fhealth\n",[243,868,869,874,883,887,892],{"__ignoreMap":254},[287,870,871],{"class":289,"line":290},[287,872,873],{"class":359},"# Inspect systemd status\n",[287,875,876,878,881],{"class":289,"line":324},[287,877,838],{"class":293},[287,879,880],{"class":297}," status",[287,882,854],{"class":297},[287,884,885],{"class":289,"line":382},[287,886,537],{"emptyLinePlaceholder":536},[287,888,889],{"class":289,"line":416},[287,890,891],{"class":359},"# Health check\n",[287,893,894,896,899],{"class":289,"line":433},[287,895,549],{"class":293},[287,897,898],{"class":297}," -s",[287,900,901],{"class":297}," http:\u002F\u002F127.0.0.1:3000\u002Fapi\u002Fhealth\n",[228,903,904,905,908],{},"If successful, the endpoint responds with ",[243,906,907],{},"{\"status\":\"ok\"}",".",[910,911,912],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":254,"searchDepth":324,"depth":324,"links":914},[915,916,924],{"id":237,"depth":324,"text":238},{"id":261,"depth":324,"text":262,"children":917},[918,919,920,921,922,923],{"id":269,"depth":382,"text":270},{"id":301,"depth":382,"text":302},{"id":337,"depth":382,"text":338},{"id":582,"depth":382,"text":583},{"id":720,"depth":382,"text":721},{"id":824,"depth":382,"text":825},{"id":859,"depth":324,"text":860},"Complete production deployment guide for an Ubuntu VPS with systemd.","md",null,{},{"icon":149},{"title":931,"description":932},"VPS Installation Guide - Ubuntu & systemd - GO Shortener","Step-by-step production deployment instructions for running GO Shortener on an Ubuntu VPS with systemd.","qJRfIBOyVmQmgIrFCLDweDNIN0qxJgsnG366M8Nc2bw",[935,937],{"title":136,"path":137,"stem":138,"description":936,"icon":139,"children":-1},"Inspect security events, intrusion attempts, and login telemetry.",{"title":151,"path":152,"stem":153,"description":938,"icon":154,"children":-1},"Comprehensive production environment variables and security hardening guidelines.",1788462427924]