[{"data":1,"prerenderedAt":517},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-first-setup":218,"-getting-started-first-setup-surround":512},[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":36,"body":220,"description":503,"extension":504,"links":505,"meta":506,"navigation":507,"path":37,"seo":508,"stem":38,"__hash__":511},"docs\u002F2.getting-started\u002F3.first-setup.md",{"type":221,"value":222,"toc":494},"minimark",[223,227,231,234,239,242,254,259,307,309,313,319,329,332,352,354,358,361,453,455,459,466,483,486,490],[224,225,36],"h1",{"id":226},"first-setup",[228,229,230],"p",{},"After installing GO Shortener and ensuring the service is running, follow this guide to initialize the system and claim ownership of your instance.",[232,233],"hr",{},[235,236,238],"h2",{"id":237},"_1-the-zero-hardcoded-super-admin-bootstrap","1. The Zero-Hardcoded Super Admin Bootstrap",[228,240,241],{},"GO Shortener does not ship with hardcoded default administrative credentials. Instead, it utilizes an automatic first-registration claim model:",[243,244,245],"important",{},[246,247,248,249,253],"strong",{},"The very first user account created on a fresh GO installation automatically receives the ",[250,251,252],"code",{},"super_admin"," role.",[255,256,258],"h3",{"id":257},"claiming-ownership","Claiming Ownership:",[260,261,262,274,281,297],"ol",{},[263,264,265,266,269,270,273],"li",{},"Open your browser and navigate to your deployed domain (e.g., ",[250,267,268],{},"https:\u002F\u002Fgo.arcn.online\u002Fregister",") or ",[250,271,272],{},"http:\u002F\u002Flocalhost:3000\u002Fregister",".",[263,275,276,277,280],{},"Register a new user account with your name, email, and a strong password (or click ",[246,278,279],{},"Continue with Google"," if Firebase is configured).",[263,282,283,284],{},"Upon registration, the backend checks the user table. Finding zero pre-existing users, it automatically sets:\n",[285,286,287,292],"ul",{},[263,288,289],{},[250,290,291],{},"role = \"super_admin\"",[263,293,294],{},[250,295,296],{},"status = \"active\"",[263,298,299,300,303,304,273],{},"You will immediately have unrestricted access to the ",[246,301,302],{},"Admin Control Center"," at ",[250,305,306],{},"\u002Fadmin",[232,308],{},[235,310,312],{"id":311},"_2-accessing-the-admin-panel","2. Accessing the Admin Panel",[228,314,315,316,318],{},"Once logged into your ",[250,317,252],{}," account, click on your profile avatar in the header or navigate directly to:",[320,321,327],"pre",{"className":322,"code":324,"language":325,"meta":326},[323],"language-text","https:\u002F\u002Fgo.arcn.online\u002Fadmin\n","text","",[250,328,324],{"__ignoreMap":326},[228,330,331],{},"From the Admin Control Center, you can:",[285,333,334,337,340,343,346],{},[263,335,336],{},"Review global system metrics (total links, clicks, and registered users).",[263,338,339],{},"Manage user roles and inspect activity.",[263,341,342],{},"Moderate links and handle pending abuse reports.",[263,344,345],{},"Review permanent link requests.",[263,347,348,349,273],{},"Inspect the security audit records at ",[250,350,351],{},"\u002Fadmin\u002Flogin-records",[232,353],{},[235,355,357],{"id":356},"_3-post-installation-verification-checklist","3. Post-Installation Verification Checklist",[228,359,360],{},"Complete these four quick checks to ensure your instance is fully operational:",[285,362,365,387,400,409],{"className":363},[364],"contains-task-list",[263,366,369,374,375,378,379,382,383,386],{"className":367},[368],"task-list-item",[370,371],"input",{"disabled":372,"type":373},true,"checkbox"," ",[246,376,377],{},"Health Check",": Run ",[250,380,381],{},"curl http:\u002F\u002F127.0.0.1:3000\u002Fapi\u002Fhealth"," and verify ",[250,384,385],{},"{\"status\":\"ok\"}"," is returned.",[263,388,390,374,392,395,396,399],{"className":389},[368],[370,391],{"disabled":372,"type":373},[246,393,394],{},"Anonymous Link Creation",": Visit your homepage without logging in, enter a test URL (e.g., ",[250,397,398],{},"https:\u002F\u002Fgithub.com","), select an expiration (e.g., 7 days), and confirm a short link is generated.",[263,401,403,374,405,408],{"className":402},[368],[370,404],{"disabled":372,"type":373},[246,406,407],{},"Redirection Test",": Open the generated short URL in a new browser tab and confirm you are immediately redirected (HTTP 302) to the destination.",[263,410,412,374,414,417,418,421,422],{"className":411},[368],[370,413],{"disabled":372,"type":373},[246,415,416],{},"Database Integrity",": Confirm that ",[250,419,420],{},"\u002Froot\u002FGo-shortner\u002Fdata\u002Fgo.sqlite"," has been created and is actively operating in WAL mode:\n",[320,423,428],{"className":424,"code":425,"filename":426,"language":427,"meta":326,"style":326},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ls -lh \u002Froot\u002FGo-shortner\u002Fdata\u002F\n# You should see go.sqlite, go.sqlite-wal, and go.sqlite-shm\n","Terminal","bash",[250,429,430,446],{"__ignoreMap":326},[431,432,435,439,443],"span",{"class":433,"line":434},"line",1,[431,436,438],{"class":437},"sBMFI","ls",[431,440,442],{"class":441},"sfazB"," -lh",[431,444,445],{"class":441}," \u002Froot\u002FGo-shortner\u002Fdata\u002F\n",[431,447,449],{"class":433,"line":448},2,[431,450,452],{"class":451},"sHwdD","# You should see go.sqlite, go.sqlite-wal, and go.sqlite-shm\n",[232,454],{},[235,456,458],{"id":457},"_4-development-bootstrap-credentials-optional","4. Development Bootstrap Credentials (Optional)",[228,460,461,462,465],{},"In local development environments, you may optionally supply seed credentials in your ",[250,463,464],{},".env"," file:",[320,467,471],{"className":468,"code":469,"filename":464,"language":470,"meta":326,"style":326},"language-dotenv shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ADMIN_BOOTSTRAP_EMAIL=admin@example.com\nADMIN_BOOTSTRAP_PASSWORD=ChangeMeOnFirstLogin123!\n","dotenv",[250,472,473,478],{"__ignoreMap":326},[431,474,475],{"class":433,"line":434},[431,476,477],{},"ADMIN_BOOTSTRAP_EMAIL=admin@example.com\n",[431,479,480],{"class":433,"line":448},[431,481,482],{},"ADMIN_BOOTSTRAP_PASSWORD=ChangeMeOnFirstLogin123!\n",[228,484,485],{},"If configured and the database has no registered users, GO will automatically provision this administrator account at boot time.",[487,488,489],"warning",{},"Never deploy development bootstrap passwords to production servers without changing them immediately upon first login.",[491,492,493],"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 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 .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);}",{"title":326,"searchDepth":448,"depth":448,"links":495},[496,500,501,502],{"id":237,"depth":448,"text":238,"children":497},[498],{"id":257,"depth":499,"text":258},3,{"id":311,"depth":448,"text":312},{"id":356,"depth":448,"text":357},{"id":457,"depth":448,"text":458},"Initialize GO Shortener, claim the Super Admin role, and complete initial setup.","md",null,{},{"icon":39},{"title":509,"description":510},"First Setup & Super Admin Bootstrap - GO Shortener","How to complete the initial setup of GO Shortener and claim the Super Admin role.","5DUIEuSuohdZw_DKgiRqIx4Mx8IkSw4xnM5gWejUM2Q",[513,515],{"title":31,"path":32,"stem":33,"description":514,"icon":34,"children":-1},"Initial configuration and environment settings for GO Shortener.",{"title":41,"path":42,"stem":43,"description":516,"icon":44,"children":-1},"Update GO Shortener to a newer release safely without downtime or data loss.",1788462425909]