[{"data":1,"prerenderedAt":1237},["ShallowReactive",2],{"navigation_docs":3,"-deployment-scaling":204,"-deployment-scaling-surround":1232},[4,40,69,82,91,116,129,146,167],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30,35],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":26,"path":27,"stem":28,"icon":29},"Project Structure","\u002Fgetting-started\u002Fproject-structure","1.getting-started\u002F4.project-structure","i-lucide-folder-tree",{"title":31,"path":32,"stem":33,"icon":34},"First Deployment","\u002Fgetting-started\u002Ffirst-deployment","1.getting-started\u002F5.first-deployment","i-lucide-upload-cloud",{"title":36,"path":37,"stem":38,"icon":39},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F6.troubleshooting","i-lucide-wrench",{"title":41,"children":42,"path":67,"stem":68,"page":6},"Platform",[43,47,51,55,59,63],{"title":44,"path":45,"stem":46},"Dashboard","\u002Fplatform\u002Fdashboard","2.platform\u002F1.dashboard",{"title":48,"path":49,"stem":50},"Marketplace","\u002Fplatform\u002Fmarketplace","2.platform\u002F2.marketplace",{"title":52,"path":53,"stem":54},"Monitoring & Metrics","\u002Fplatform\u002Fmonitoring","2.platform\u002F3.monitoring",{"title":56,"path":57,"stem":58},"Projects","\u002Fplatform\u002Fprojects","2.platform\u002F4.projects",{"title":60,"path":61,"stem":62},"Services","\u002Fplatform\u002Fservices","2.platform\u002F5.services",{"title":64,"path":65,"stem":66},"Logs","\u002Fplatform\u002Flogs","2.platform\u002F6.logs","\u002Fplatform","2.platform",{"title":70,"children":71,"path":80,"stem":81,"page":6},"CLI",[72,76],{"title":73,"path":74,"stem":75},"CLI Installation","\u002Fcli\u002Finstallation","3.cli\u002F1.installation",{"title":77,"path":78,"stem":79},"Commands Reference","\u002Fcli\u002Fcommands","3.cli\u002F2.commands","\u002Fcli","3.cli",{"title":83,"children":84,"path":89,"stem":90,"page":6},"TUI",[85],{"title":86,"path":87,"stem":88},"TUI Overview","\u002Ftui\u002Foverview","4.tui\u002F1.overview","\u002Ftui","4.tui",{"title":92,"children":93,"path":114,"stem":115,"page":6},"Docker",[94,98,102,106,110],{"title":95,"path":96,"stem":97},"Docker Containers","\u002Fdocker\u002Fcontainers","5.docker\u002F1.containers",{"title":99,"path":100,"stem":101},"Docker Images","\u002Fdocker\u002Fimages","5.docker\u002F2.images",{"title":103,"path":104,"stem":105},"Docker Compose","\u002Fdocker\u002Fcompose","5.docker\u002F3.compose",{"title":107,"path":108,"stem":109},"Docker Volumes","\u002Fdocker\u002Fvolumes","5.docker\u002F4.volumes",{"title":111,"path":112,"stem":113},"Docker Networks","\u002Fdocker\u002Fnetworks","5.docker\u002F5.networks","\u002Fdocker","5.docker",{"title":117,"children":118,"path":127,"stem":128,"page":6},"PM2",[119,123],{"title":120,"path":121,"stem":122},"Process Management","\u002Fpm2\u002Fprocess-management","6.pm2\u002F1.process-management",{"title":124,"path":125,"stem":126},"Zero-Downtime Deployments","\u002Fpm2\u002Fzero-downtime","6.pm2\u002F2.zero-downtime","\u002Fpm2","6.pm2",{"title":130,"children":131,"path":144,"stem":145,"page":6},"VPS",[132,136,140],{"title":133,"path":134,"stem":135},"VPS Management","\u002Fvps\u002Fssh-management","7.vps\u002F1.ssh-management",{"title":137,"path":138,"stem":139},"SSH Access","\u002Fvps\u002Fssh","7.vps\u002F2.ssh",{"title":141,"path":142,"stem":143},"Firewall","\u002Fvps\u002Ffirewall","7.vps\u002F3.firewall","\u002Fvps","7.vps",{"title":147,"children":148,"path":165,"stem":166,"page":6},"Deployment",[149,153,157,161],{"title":150,"path":151,"stem":152},"Production Setup","\u002Fdeployment\u002Fproduction-setup","8.deployment\u002F1.production-setup",{"title":154,"path":155,"stem":156},"Scaling","\u002Fdeployment\u002Fscaling","8.deployment\u002F2.scaling",{"title":158,"path":159,"stem":160},"GitHub Actions CI\u002FCD","\u002Fdeployment\u002Fgithub-actions","8.deployment\u002F3.github-actions",{"title":162,"path":163,"stem":164},"Security","\u002Fdeployment\u002Fsecurity","8.deployment\u002F4.security","\u002Fdeployment","8.deployment",{"title":168,"children":169,"path":202,"stem":203,"page":6},"Reference",[170,174,178,182,186,190,194,198],{"title":171,"path":172,"stem":173},"Architecture","\u002Freference\u002Farchitecture","9.reference\u002F1.architecture",{"title":175,"path":176,"stem":177},"CLI Reference","\u002Freference\u002Fcli-reference","9.reference\u002F2.cli-reference",{"title":179,"path":180,"stem":181},"Environment Variables","\u002Freference\u002Fenvironment-variables","9.reference\u002F3.environment-variables",{"title":183,"path":184,"stem":185},"API Reference","\u002Freference\u002Fapi-reference","9.reference\u002F4.api-reference",{"title":187,"path":188,"stem":189},"Webhooks","\u002Freference\u002Fwebhooks","9.reference\u002F5.webhooks",{"title":191,"path":192,"stem":193},"Authentication","\u002Freference\u002Fauthentication","9.reference\u002F6.authentication",{"title":195,"path":196,"stem":197},"Configuration","\u002Freference\u002Fconfiguration","9.reference\u002F7.configuration",{"title":199,"path":200,"stem":201},"API Overview","\u002Freference\u002Fapi","9.reference\u002F8.api","\u002Freference","9.reference",{"id":205,"title":154,"body":206,"description":1226,"extension":1227,"links":1228,"meta":1229,"navigation":278,"path":155,"seo":1230,"stem":156,"__hash__":1231},"docs\u002F8.deployment\u002F2.scaling.md",{"type":207,"value":208,"toc":1200},"minimark",[209,214,218,223,226,231,399,403,478,482,485,489,673,677,755,759,763,766,779,783,786,848,852,856,863,933,938,946,950,954,957,1002,1006,1009,1013,1093,1097,1100,1104,1162,1166,1180,1183,1196],[210,211,213],"h1",{"id":212},"application-scaling","Application Scaling",[215,216,217],"p",{},"Scale your applications to handle increased load.",[219,220,222],"h2",{"id":221},"vertical-scaling","Vertical Scaling",[215,224,225],{},"Increase resources for a single instance.",[227,228,230],"h3",{"id":229},"docker-container-scaling","Docker Container Scaling",[232,233,238],"pre",{"className":234,"code":235,"language":236,"meta":237,"style":237},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Increase memory limit\nskyport docker update --memory 2g container-name\n\n# Increase CPU\nskyport docker update --cpus 2 container-name\n\n# Both together\nskyport docker update \\\n  --memory 4g \\\n  --cpus 4 \\\n  container-name\n\n# Verify changes\nskyport docker inspect container-name | grep -E \"Memory|Cpu\"\n","bash","",[239,240,241,250,273,280,286,304,309,315,328,339,350,356,361,367],"code",{"__ignoreMap":237},[242,243,246],"span",{"class":244,"line":245},"line",1,[242,247,249],{"class":248},"sHwdD","# Increase memory limit\n",[242,251,253,257,261,264,267,270],{"class":244,"line":252},2,[242,254,256],{"class":255},"sBMFI","skyport",[242,258,260],{"class":259},"sfazB"," docker",[242,262,263],{"class":259}," update",[242,265,266],{"class":259}," --memory",[242,268,269],{"class":259}," 2g",[242,271,272],{"class":259}," container-name\n",[242,274,276],{"class":244,"line":275},3,[242,277,279],{"emptyLinePlaceholder":278},true,"\n",[242,281,283],{"class":244,"line":282},4,[242,284,285],{"class":248},"# Increase CPU\n",[242,287,289,291,293,295,298,302],{"class":244,"line":288},5,[242,290,256],{"class":255},[242,292,260],{"class":259},[242,294,263],{"class":259},[242,296,297],{"class":259}," --cpus",[242,299,301],{"class":300},"sbssI"," 2",[242,303,272],{"class":259},[242,305,307],{"class":244,"line":306},6,[242,308,279],{"emptyLinePlaceholder":278},[242,310,312],{"class":244,"line":311},7,[242,313,314],{"class":248},"# Both together\n",[242,316,318,320,322,324],{"class":244,"line":317},8,[242,319,256],{"class":255},[242,321,260],{"class":259},[242,323,263],{"class":259},[242,325,327],{"class":326},"sTEyZ"," \\\n",[242,329,331,334,337],{"class":244,"line":330},9,[242,332,333],{"class":259},"  --memory",[242,335,336],{"class":259}," 4g",[242,338,327],{"class":326},[242,340,342,345,348],{"class":244,"line":341},10,[242,343,344],{"class":259},"  --cpus",[242,346,347],{"class":300}," 4",[242,349,327],{"class":326},[242,351,353],{"class":244,"line":352},11,[242,354,355],{"class":259},"  container-name\n",[242,357,359],{"class":244,"line":358},12,[242,360,279],{"emptyLinePlaceholder":278},[242,362,364],{"class":244,"line":363},13,[242,365,366],{"class":248},"# Verify changes\n",[242,368,370,372,374,377,380,384,387,390,393,396],{"class":244,"line":369},14,[242,371,256],{"class":255},[242,373,260],{"class":259},[242,375,376],{"class":259}," inspect",[242,378,379],{"class":259}," container-name",[242,381,383],{"class":382},"sMK4o"," |",[242,385,386],{"class":255}," grep",[242,388,389],{"class":259}," -E",[242,391,392],{"class":382}," \"",[242,394,395],{"class":259},"Memory|Cpu",[242,397,398],{"class":382},"\"\n",[227,400,402],{"id":401},"pm2-process-scaling","PM2 Process Scaling",[232,404,406],{"className":234,"code":405,"language":236,"meta":237,"style":237},"# Increase instances\nskyport pm2 scale app-name 4\n\n# Decrease instances\nskyport pm2 scale app-name 2\n\n# View current instances\nskyport pm2 describe app-name | grep instances\n",[239,407,408,413,429,433,438,451,455,460],{"__ignoreMap":237},[242,409,410],{"class":244,"line":245},[242,411,412],{"class":248},"# Increase instances\n",[242,414,415,417,420,423,426],{"class":244,"line":252},[242,416,256],{"class":255},[242,418,419],{"class":259}," pm2",[242,421,422],{"class":259}," scale",[242,424,425],{"class":259}," app-name",[242,427,428],{"class":300}," 4\n",[242,430,431],{"class":244,"line":275},[242,432,279],{"emptyLinePlaceholder":278},[242,434,435],{"class":244,"line":282},[242,436,437],{"class":248},"# Decrease instances\n",[242,439,440,442,444,446,448],{"class":244,"line":288},[242,441,256],{"class":255},[242,443,419],{"class":259},[242,445,422],{"class":259},[242,447,425],{"class":259},[242,449,450],{"class":300}," 2\n",[242,452,453],{"class":244,"line":306},[242,454,279],{"emptyLinePlaceholder":278},[242,456,457],{"class":244,"line":311},[242,458,459],{"class":248},"# View current instances\n",[242,461,462,464,466,469,471,473,475],{"class":244,"line":317},[242,463,256],{"class":255},[242,465,419],{"class":259},[242,467,468],{"class":259}," describe",[242,470,425],{"class":259},[242,472,383],{"class":382},[242,474,386],{"class":255},[242,476,477],{"class":259}," instances\n",[219,479,481],{"id":480},"horizontal-scaling","Horizontal Scaling",[215,483,484],{},"Run multiple instances with load balancing.",[227,486,488],{"id":487},"docker-with-load-balancer","Docker with Load Balancer",[232,490,492],{"className":234,"code":491,"language":236,"meta":237,"style":237},"# Create network\nskyport docker network create lb-network\n\n# Run multiple instances\nfor i in {1..3}; do\n  skyport docker run -d \\\n    --name app-$i \\\n    --network lb-network \\\n    -e INSTANCE=$i \\\n    my-app:latest\ndone\n\n# Run load balancer (Nginx)\nskyport docker run -d \\\n  --name nginx-lb \\\n  --network lb-network \\\n  -p 80:80 \\\n  -v \u002Fpath\u002Fto\u002Fnginx.conf:\u002Fetc\u002Fnginx\u002Fnginx.conf \\\n  nginx:latest\n",[239,493,494,499,514,518,523,547,562,573,583,593,598,603,607,612,624,635,645,656,667],{"__ignoreMap":237},[242,495,496],{"class":244,"line":245},[242,497,498],{"class":248},"# Create network\n",[242,500,501,503,505,508,511],{"class":244,"line":252},[242,502,256],{"class":255},[242,504,260],{"class":259},[242,506,507],{"class":259}," network",[242,509,510],{"class":259}," create",[242,512,513],{"class":259}," lb-network\n",[242,515,516],{"class":244,"line":275},[242,517,279],{"emptyLinePlaceholder":278},[242,519,520],{"class":244,"line":282},[242,521,522],{"class":248},"# Run multiple instances\n",[242,524,525,529,532,535,538,541,544],{"class":244,"line":288},[242,526,528],{"class":527},"s7zQu","for",[242,530,531],{"class":326}," i ",[242,533,534],{"class":527},"in",[242,536,537],{"class":326}," {",[242,539,540],{"class":255},"1..3}",[242,542,543],{"class":382},";",[242,545,546],{"class":527}," do\n",[242,548,549,552,554,557,560],{"class":244,"line":306},[242,550,551],{"class":255},"  skyport",[242,553,260],{"class":259},[242,555,556],{"class":259}," run",[242,558,559],{"class":259}," -d",[242,561,327],{"class":326},[242,563,564,567,570],{"class":244,"line":311},[242,565,566],{"class":259},"    --name",[242,568,569],{"class":259}," app-",[242,571,572],{"class":326},"$i \\\n",[242,574,575,578,581],{"class":244,"line":317},[242,576,577],{"class":259},"    --network",[242,579,580],{"class":259}," lb-network",[242,582,327],{"class":326},[242,584,585,588,591],{"class":244,"line":330},[242,586,587],{"class":259},"    -e",[242,589,590],{"class":259}," INSTANCE=",[242,592,572],{"class":326},[242,594,595],{"class":244,"line":341},[242,596,597],{"class":259},"    my-app:latest\n",[242,599,600],{"class":244,"line":352},[242,601,602],{"class":527},"done\n",[242,604,605],{"class":244,"line":358},[242,606,279],{"emptyLinePlaceholder":278},[242,608,609],{"class":244,"line":363},[242,610,611],{"class":248},"# Run load balancer (Nginx)\n",[242,613,614,616,618,620,622],{"class":244,"line":369},[242,615,256],{"class":255},[242,617,260],{"class":259},[242,619,556],{"class":259},[242,621,559],{"class":259},[242,623,327],{"class":326},[242,625,627,630,633],{"class":244,"line":626},15,[242,628,629],{"class":259},"  --name",[242,631,632],{"class":259}," nginx-lb",[242,634,327],{"class":326},[242,636,638,641,643],{"class":244,"line":637},16,[242,639,640],{"class":259},"  --network",[242,642,580],{"class":259},[242,644,327],{"class":326},[242,646,648,651,654],{"class":244,"line":647},17,[242,649,650],{"class":259},"  -p",[242,652,653],{"class":259}," 80:80",[242,655,327],{"class":326},[242,657,659,662,665],{"class":244,"line":658},18,[242,660,661],{"class":259},"  -v",[242,663,664],{"class":259}," \u002Fpath\u002Fto\u002Fnginx.conf:\u002Fetc\u002Fnginx\u002Fnginx.conf",[242,666,327],{"class":326},[242,668,670],{"class":244,"line":669},19,[242,671,672],{"class":259},"  nginx:latest\n",[227,674,676],{"id":675},"pm2-cluster-mode","PM2 Cluster Mode",[232,678,680],{"className":234,"code":679,"language":236,"meta":237,"style":237},"# Start in cluster mode with multiple instances\nskyport pm2 start app.js -i 4 --name \"api\"\n\n# Scale dynamically\nskyport pm2 scale api 8\n\n# Monitor cluster\nskyport pm2 list\n",[239,681,682,687,714,718,723,737,741,746],{"__ignoreMap":237},[242,683,684],{"class":244,"line":245},[242,685,686],{"class":248},"# Start in cluster mode with multiple instances\n",[242,688,689,691,693,696,699,702,704,707,709,712],{"class":244,"line":252},[242,690,256],{"class":255},[242,692,419],{"class":259},[242,694,695],{"class":259}," start",[242,697,698],{"class":259}," app.js",[242,700,701],{"class":259}," -i",[242,703,347],{"class":300},[242,705,706],{"class":259}," --name",[242,708,392],{"class":382},[242,710,711],{"class":259},"api",[242,713,398],{"class":382},[242,715,716],{"class":244,"line":275},[242,717,279],{"emptyLinePlaceholder":278},[242,719,720],{"class":244,"line":282},[242,721,722],{"class":248},"# Scale dynamically\n",[242,724,725,727,729,731,734],{"class":244,"line":288},[242,726,256],{"class":255},[242,728,419],{"class":259},[242,730,422],{"class":259},[242,732,733],{"class":259}," api",[242,735,736],{"class":300}," 8\n",[242,738,739],{"class":244,"line":306},[242,740,279],{"emptyLinePlaceholder":278},[242,742,743],{"class":244,"line":311},[242,744,745],{"class":248},"# Monitor cluster\n",[242,747,748,750,752],{"class":244,"line":317},[242,749,256],{"class":255},[242,751,419],{"class":259},[242,753,754],{"class":259}," list\n",[219,756,758],{"id":757},"auto-scaling-strategy","Auto-Scaling Strategy",[227,760,762],{"id":761},"container-based","Container-Based",[215,764,765],{},"Monitor metrics and scale based on:",[767,768,769,773,776],"ul",{},[770,771,772],"li",{},"CPU usage > 70%",[770,774,775],{},"Memory usage > 80%",[770,777,778],{},"Request rate",[227,780,782],{"id":781},"process-based","Process-Based",[215,784,785],{},"Using PM2's built-in monitoring:",[232,787,791],{"className":788,"code":789,"language":790,"meta":237,"style":237},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","module.exports = {\n  apps: [\n    {\n      name: 'api',\n      script: 'server.js',\n      instances: 'max',\n      exec_mode: 'cluster',\n      max_memory_restart: '500M',\n    },\n  ],\n};\n","javascript",[239,792,793,798,803,808,813,818,823,828,833,838,843],{"__ignoreMap":237},[242,794,795],{"class":244,"line":245},[242,796,797],{},"module.exports = {\n",[242,799,800],{"class":244,"line":252},[242,801,802],{},"  apps: [\n",[242,804,805],{"class":244,"line":275},[242,806,807],{},"    {\n",[242,809,810],{"class":244,"line":282},[242,811,812],{},"      name: 'api',\n",[242,814,815],{"class":244,"line":288},[242,816,817],{},"      script: 'server.js',\n",[242,819,820],{"class":244,"line":306},[242,821,822],{},"      instances: 'max',\n",[242,824,825],{"class":244,"line":311},[242,826,827],{},"      exec_mode: 'cluster',\n",[242,829,830],{"class":244,"line":317},[242,831,832],{},"      max_memory_restart: '500M',\n",[242,834,835],{"class":244,"line":330},[242,836,837],{},"    },\n",[242,839,840],{"class":244,"line":341},[242,841,842],{},"  ],\n",[242,844,845],{"class":244,"line":352},[242,846,847],{},"};\n",[219,849,851],{"id":850},"load-balancing","Load Balancing",[227,853,855],{"id":854},"reverse-proxy-configuration","Reverse Proxy Configuration",[215,857,858,862],{},[859,860,861],"strong",{},"Nginx",":",[232,864,868],{"className":865,"code":866,"language":867,"meta":237,"style":237},"language-nginx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","upstream app {\n    server app-1:3000;\n    server app-2:3000;\n    server app-3:3000;\n}\n\nserver {\n    listen 80;\n    location \u002F {\n        proxy_pass http:\u002F\u002Fapp;\n        proxy_set_header Host $host;\n    }\n}\n","nginx",[239,869,870,875,880,885,890,895,899,904,909,914,919,924,929],{"__ignoreMap":237},[242,871,872],{"class":244,"line":245},[242,873,874],{},"upstream app {\n",[242,876,877],{"class":244,"line":252},[242,878,879],{},"    server app-1:3000;\n",[242,881,882],{"class":244,"line":275},[242,883,884],{},"    server app-2:3000;\n",[242,886,887],{"class":244,"line":282},[242,888,889],{},"    server app-3:3000;\n",[242,891,892],{"class":244,"line":288},[242,893,894],{},"}\n",[242,896,897],{"class":244,"line":306},[242,898,279],{"emptyLinePlaceholder":278},[242,900,901],{"class":244,"line":311},[242,902,903],{},"server {\n",[242,905,906],{"class":244,"line":317},[242,907,908],{},"    listen 80;\n",[242,910,911],{"class":244,"line":330},[242,912,913],{},"    location \u002F {\n",[242,915,916],{"class":244,"line":341},[242,917,918],{},"        proxy_pass http:\u002F\u002Fapp;\n",[242,920,921],{"class":244,"line":352},[242,922,923],{},"        proxy_set_header Host $host;\n",[242,925,926],{"class":244,"line":358},[242,927,928],{},"    }\n",[242,930,931],{"class":244,"line":363},[242,932,894],{},[215,934,935,862],{},[859,936,937],{},"Caddy",[232,939,944],{"className":940,"code":942,"language":943},[941],"language-text","example.com {\n    reverse_proxy localhost:3001 localhost:3002 localhost:3003\n}\n","text",[239,945,942],{"__ignoreMap":237},[219,947,949],{"id":948},"database-scaling","Database Scaling",[227,951,953],{"id":952},"connection-pooling","Connection Pooling",[215,955,956],{},"Use a connection pool to efficiently use database connections:",[232,958,960],{"className":234,"code":959,"language":236,"meta":237,"style":237},"# Start PgBouncer for PostgreSQL\nskyport docker run -d \\\n  --name pgbouncer \\\n  --network app-network \\\n  edoburu\u002Fpgbouncer:latest\n",[239,961,962,967,979,988,997],{"__ignoreMap":237},[242,963,964],{"class":244,"line":245},[242,965,966],{"class":248},"# Start PgBouncer for PostgreSQL\n",[242,968,969,971,973,975,977],{"class":244,"line":252},[242,970,256],{"class":255},[242,972,260],{"class":259},[242,974,556],{"class":259},[242,976,559],{"class":259},[242,978,327],{"class":326},[242,980,981,983,986],{"class":244,"line":275},[242,982,629],{"class":259},[242,984,985],{"class":259}," pgbouncer",[242,987,327],{"class":326},[242,989,990,992,995],{"class":244,"line":282},[242,991,640],{"class":259},[242,993,994],{"class":259}," app-network",[242,996,327],{"class":326},[242,998,999],{"class":244,"line":288},[242,1000,1001],{"class":259},"  edoburu\u002Fpgbouncer:latest\n",[227,1003,1005],{"id":1004},"read-replicas","Read Replicas",[215,1007,1008],{},"Set up read replicas for high-traffic applications.",[219,1010,1012],{"id":1011},"monitoring-scaled-applications","Monitoring Scaled Applications",[232,1014,1016],{"className":234,"code":1015,"language":236,"meta":237,"style":237},"# Monitor all instances\nskyport pm2 monit\n\n# View stats for all containers\nskyport docker stats\n\n# View logs from all instances\nskyport logs app-name -f\n\n# Specific instance logs\nskyport docker logs app-1 -f\n",[239,1017,1018,1023,1032,1036,1041,1050,1054,1059,1071,1075,1080],{"__ignoreMap":237},[242,1019,1020],{"class":244,"line":245},[242,1021,1022],{"class":248},"# Monitor all instances\n",[242,1024,1025,1027,1029],{"class":244,"line":252},[242,1026,256],{"class":255},[242,1028,419],{"class":259},[242,1030,1031],{"class":259}," monit\n",[242,1033,1034],{"class":244,"line":275},[242,1035,279],{"emptyLinePlaceholder":278},[242,1037,1038],{"class":244,"line":282},[242,1039,1040],{"class":248},"# View stats for all containers\n",[242,1042,1043,1045,1047],{"class":244,"line":288},[242,1044,256],{"class":255},[242,1046,260],{"class":259},[242,1048,1049],{"class":259}," stats\n",[242,1051,1052],{"class":244,"line":306},[242,1053,279],{"emptyLinePlaceholder":278},[242,1055,1056],{"class":244,"line":311},[242,1057,1058],{"class":248},"# View logs from all instances\n",[242,1060,1061,1063,1066,1068],{"class":244,"line":317},[242,1062,256],{"class":255},[242,1064,1065],{"class":259}," logs",[242,1067,425],{"class":259},[242,1069,1070],{"class":259}," -f\n",[242,1072,1073],{"class":244,"line":330},[242,1074,279],{"emptyLinePlaceholder":278},[242,1076,1077],{"class":244,"line":341},[242,1078,1079],{"class":248},"# Specific instance logs\n",[242,1081,1082,1084,1086,1088,1091],{"class":244,"line":352},[242,1083,256],{"class":255},[242,1085,260],{"class":259},[242,1087,1065],{"class":259},[242,1089,1090],{"class":259}," app-1",[242,1092,1070],{"class":259},[219,1094,1096],{"id":1095},"session-persistence","Session Persistence",[215,1098,1099],{},"For scaled applications, ensure sessions are shared:",[227,1101,1103],{"id":1102},"redis-session-store","Redis Session Store",[232,1105,1107],{"className":234,"code":1106,"language":236,"meta":237,"style":237},"# Start Redis\nskyport docker run -d \\\n  --name redis \\\n  --network app-network \\\n  redis:latest\n\n# Configure app to use Redis\n# env: REDIS_URL=redis:\u002F\u002Fredis:6379\n",[239,1108,1109,1114,1126,1135,1143,1148,1152,1157],{"__ignoreMap":237},[242,1110,1111],{"class":244,"line":245},[242,1112,1113],{"class":248},"# Start Redis\n",[242,1115,1116,1118,1120,1122,1124],{"class":244,"line":252},[242,1117,256],{"class":255},[242,1119,260],{"class":259},[242,1121,556],{"class":259},[242,1123,559],{"class":259},[242,1125,327],{"class":326},[242,1127,1128,1130,1133],{"class":244,"line":275},[242,1129,629],{"class":259},[242,1131,1132],{"class":259}," redis",[242,1134,327],{"class":326},[242,1136,1137,1139,1141],{"class":244,"line":282},[242,1138,640],{"class":259},[242,1140,994],{"class":259},[242,1142,327],{"class":326},[242,1144,1145],{"class":244,"line":288},[242,1146,1147],{"class":259},"  redis:latest\n",[242,1149,1150],{"class":244,"line":306},[242,1151,279],{"emptyLinePlaceholder":278},[242,1153,1154],{"class":244,"line":311},[242,1155,1156],{"class":248},"# Configure app to use Redis\n",[242,1158,1159],{"class":244,"line":317},[242,1160,1161],{"class":248},"# env: REDIS_URL=redis:\u002F\u002Fredis:6379\n",[219,1163,1165],{"id":1164},"cost-optimization","Cost Optimization",[767,1167,1168,1171,1174,1177],{},[770,1169,1170],{},"Scale down during low traffic",[770,1172,1173],{},"Use spot instances if available",[770,1175,1176],{},"Monitor CPU\u002Fmemory usage",[770,1178,1179],{},"Remove unused containers",[1181,1182],"hr",{},[215,1184,1185,1188,1189,1193,1194],{},[859,1186,1187],{},"Next",": ",[1190,1191,1192],"a",{"href":159},"CI\u002FCD Integration"," | ",[1190,1195,150],{"href":151},[1197,1198,1199],"style",{},"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 .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 pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .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}",{"title":237,"searchDepth":252,"depth":252,"links":1201},[1202,1206,1210,1214,1217,1221,1222,1225],{"id":221,"depth":252,"text":222,"children":1203},[1204,1205],{"id":229,"depth":275,"text":230},{"id":401,"depth":275,"text":402},{"id":480,"depth":252,"text":481,"children":1207},[1208,1209],{"id":487,"depth":275,"text":488},{"id":675,"depth":275,"text":676},{"id":757,"depth":252,"text":758,"children":1211},[1212,1213],{"id":761,"depth":275,"text":762},{"id":781,"depth":275,"text":782},{"id":850,"depth":252,"text":851,"children":1215},[1216],{"id":854,"depth":275,"text":855},{"id":948,"depth":252,"text":949,"children":1218},[1219,1220],{"id":952,"depth":275,"text":953},{"id":1004,"depth":275,"text":1005},{"id":1011,"depth":252,"text":1012},{"id":1095,"depth":252,"text":1096,"children":1223},[1224],{"id":1102,"depth":275,"text":1103},{"id":1164,"depth":252,"text":1165},"Scale applications horizontally and vertically","md",null,{},{"title":154,"description":1226},"1H4H2wVlrJuapqoArgq0zjUb2xefhHFxx-s0rxnRJBw",[1233,1235],{"title":150,"path":151,"stem":152,"description":1234,"children":-1},"Set up SkyPort for production deployments",{"title":158,"path":159,"stem":160,"description":1236,"children":-1},"Automate deployments with GitHub Actions and SkyPort",1778858462152]