UPMILab.
☰

MY SERVER / AGENT PUBLISHING

내 서버로 운영하는 홈페이지, 제작부터 배포까지 에이전트로

호스팅 서버를 따로 빌리지 않고 회사·Lab·Academy·뉴스를 운영합니다. 원하는 내용을 말하면 도메인 연결, 제작과 수정, 콘텐츠 업로드, 배포와 점검까지 이어집니다. 실제 구성과 회선 측정으로 운영 방식과 동시접속 조건을 살펴봤습니다.

01

불편했던 점

서비스가 늘 때마다 호스팅과 관리 방법을 따로 익히는 일이 번거로웠습니다.

02

이렇게 풀었습니다

개인 서버에 도메인별 웹 앱을 연결하고 에이전트가 제작·수정·배포·점검을 이어서 실행하게 했습니다.

03

달라진 점

회사·Lab·Academy·뉴스를 공개하고, 필요한 기능과 콘텐츠를 말로 요청해 확장하는 운영 기반을 만들었습니다.

개인 서버에서 회사, Lab, Academy, 뉴스 네 개의 도메인으로 나뉘는 운영 구조도
MY SERVER / AGENT PUBLISHING홈페이지 운영도, 내 서버와 에이전트로.

도메인 · 제작 · 콘텐츠 · 배포 · 운영

실제 구성 기반 구조도확인한 운영 구성을 바탕으로 그린 구조도입니다. 실제 관리자 화면이나 서버 사진은 아닙니다.
BEFORE

사이트마다 호스팅과 관리 방법을 따로 고민.

AFTER

원하는 결과를 말하면 제작부터 공개·점검까지 연결.

4공개 사이트
1 Gbps인터넷 회선
2.5 Gbps서버 유선 링크

FROM REQUEST TO RESULT

이렇게 만들었습니다.

  1. 01

    원하는 결과 설명

    내용·기능·공개 범위를 정합니다.

  2. 02

    제작과 도메인 연결

    원고·이미지·코드와 서비스 주소를 연결합니다.

  3. 03

    검증 후 공개

    별도 버전을 확인하고 공개 서비스에 적용합니다.

  4. 04

    계속 운영하고 확장

    서비스·인증서 관리와 다음 수정을 이어갑니다.

MY SERVER / FOUR PUBLIC DESTINATIONS

개인 서버 하나에서, 주소마다 다른 공간으로.

회사 소개, 실사용 사례, 강의, 뉴스는 목적이 다릅니다. 사이트마다 호스팅을 새로 계약하는 대신, 제가 가진 서버에서 각각 실행하고 도메인으로 나눴습니다.

외부 방문자HTTPS
SK브로드밴드1 Gbps
NAS · OpenWrt라우터 · 내부망
Mac Studio2.5 Gbps LAN
Nginx도메인별 분기

도메인 연결과 네 사이트의 HTTPS 응답을 확인했습니다. 내부 2.5Gbps는 서버와 장비 사이의 속도이며, 외부 방문자에게 보내는 속도는 인터넷 업로드 회선의 영향을 받습니다.

REQUEST → PUBLISH → OPERATE

“이 내용을 올려줘”에서 공개 주소까지.

제가 정하는 것

독자·내용·공개 범위

자료와 원하는 결과를 주고, 공개할 내용을 확인합니다.

요청에 따라 실행

제작·수정·콘텐츠·배포

에이전트가 원고·이미지·코드를 반영하고 빌드, 링크 점검, 배포와 HTTPS 확인까지 이어갑니다.

평소 자동 처리

서비스 유지·인증서 갱신

실행 관리자가 웹 서비스를 유지하고 예약 작업이 인증서 갱신과 웹 서버 재적용을 처리합니다.

문제가 생겼을 때

진단·검증·복구

기록을 살펴 원인을 좁히고 수정합니다. 배포 확인이 실패하면 기존 실행 경로로 되돌릴 수 있도록 준비합니다.

제가 방향을 정하면 제작부터 운영까지 반복 작업이 연결되는 방식입니다. 모든 장애를 무인으로 해결하거나 도메인 비용 결제까지 자동 처리한다는 뜻은 아닙니다.

CAPACITY / ASSUMPTIONS YOU CAN CHANGE

몇 명까지 동시에 열 수 있을까요?

실측 최대 동시접속 인원은 아직 확정하지 않았습니다. 아래는 측정한 업로드와 현재 연결 설정을 바탕으로 계산한 시나리오입니다.

795.6 Mbps외부 업로드 · 짧은 단회 측정
2.5 Gbps현재 서버 유선 링크
30 %회선·연결 수에 남기는 여유
이 가정의 계산값108명

회선 기준 108 · 연결 예산 기준 119

실측 수용 인원이나 보장값이 아닙니다.

회선 계산: 795.6Mbps × 70% × 전송 시간 ÷ (8 × 1인당 MB)

3.2MB를 5초 안에 보내는 조건에서 회선 기준은 약 108명입니다. 1인당 동시 연결을 3~6개로 가정하면 계산값은 59~108명이므로, 60~100명 규모를 먼저 부하 시험할 목표로 잡았습니다. 이는 승인된 운영 정원이나 실측 최대 인원이 아닙니다.

집계 범위와 계산 한계 보기

업로드는 2026년 10월 1일 유선 서버에서 networkQuality로 최대 15초 동안 단독 측정했습니다. 기존 세 페이지의 초기 자체 자료량은 약 1.22~3.13MB, 참조된 전체 자체 자료량은 약 1.33~9.57MB였습니다. 브라우저 캐시·지연 로딩·광고 등 외부 자료는 별개입니다.

현재 Nginx는 작업 프로세스 1개와 연결 슬롯 1,024개를 사용합니다. 모델은 슬롯의 70%를 배정하고, 활성 프록시 요청당 방문자 연결과 내부 서버 연결 두 개를 잡았습니다. 다른 사이트·유휴 연결·실시간 연결도 자원을 공유하므로 실제 값은 달라집니다. CPU·TLS·디스크와 장시간 부하는 이 계산에서 검증하지 않았습니다.

본문 HTML만 내부에서 5개 동시 연결·총 30회 요청한 짧은 점검은 모두 성공했습니다. 이것은 외부 사용자 부하 시험이 아닙니다. 일반 글 열람과 영상, 전자칠판, AI 응답은 별도로 산정해야 하며 Lab 챗봇의 모델 응답은 현재 한 번에 하나씩 처리합니다.

COULD THIS WORK FOR YOU?

내 환경에서도 가능할까요?

개인 서버로 홈페이지를 운영할 때 도메인과 배포는 어떻게 자동화하나요?

BUILD DETAILS

구현 방법과 응용

01사이트가 필요할 때마다, 서버부터 빌려야 할까요?

회사 소개와 연구 성과를 보여줄 홈페이지가 필요했습니다. 만들고 보니 AI 활용 사례를 소개할 Lab도, 수업 자료와 학습 도구를 담을 Academy도 필요해졌습니다. 사이트가 늘어날 때마다 호스팅 상품을 고르고 관리 화면을 새로 익히는 방식은 번거로웠습니다.

그래서 이미 쓰던 개인 서버를 활용했습니다. 저는 어떤 공간을 만들지 설명하고, 에이전트가 제작부터 도메인 연결, 공개와 수정까지 이어서 처리하게 했습니다. 지금은 회사·Lab·Academy·뉴스를 서로 다른 주소로 운영합니다.

02NAS는 네트워크를, Mac Studio는 웹 서비스를

외부 요청은 SK브로드밴드 1기가 인터넷에서 NAS의 OpenWrt 라우터와 내부 유선망을 거쳐 Mac Studio로 들어옵니다. 현재 웹 서비스를 실행하는 장비는 Mac Studio M4 Max이며 메모리는 64GB입니다. 서버의 유선 링크는 2.5Gbps로 연결돼 있습니다.

Nginx가 방문자가 요청한 도메인을 보고 해당 웹 앱으로 연결합니다. 회사 홈페이지, Lab, Academy를 별도 서비스로 실행하므로 같은 서버에서도 목적에 맞는 화면과 기능을 운영할 수 있습니다. NAS가 웹 페이지를 전부 직접 실행하는 구성과는 역할이 다릅니다.

내부망의 2.5Gbps가 외부 전송 속도를 2.5배로 만들어 주지는 않습니다. 외부 방문자에게 자료를 보낼 때는 인터넷 회선의 업로드 속도가 우선적인 제한이 됩니다.

03서브도메인 하나를 더하면, 새로운 서비스가 열립니다

기본 도메인은 upmi.re.kr입니다. lab, academy, news는 이 도메인을 가리키는 CNAME으로 연결하고, 웹 서버에서 주소별로 목적지를 구분했습니다. 서브도메인을 추가할 때마다 별도의 도메인이나 유료 호스팅을 구매할 필요는 없었습니다.

도메인 관리 화면의 DNS 설정, 내부 서비스 실행, Nginx 연결, HTTPS 인증서 발급을 하나의 작업으로 진행합니다. 마지막에는 실제 공개 주소로 접속해 화면과 링크가 열리는지 확인합니다.

도메인 등록·갱신 비용과 HTTPS 인증서 관리는 별개입니다. 인증서는 예약 작업으로 갱신하고 웹 서버에 적용하지만, 도메인 결제까지 모두 자동화했다고 말하는 것은 아닙니다.

04원고를 올리는 일과 홈페이지를 고치는 일이 이어집니다

“이 사례를 추가해줘”, “사진을 바꾸고 설명을 짧게 해줘”, “강의용 공간을 따로 만들어줘”처럼 결과를 이야기합니다. 에이전트는 기존 화면과 자료를 읽고 원고·이미지·페이지 코드를 함께 수정합니다. 저는 내용과 공개 범위, 실제 경험과 맞는지를 확인합니다.

수정 뒤에는 콘텐츠 구조와 링크를 검사하고 운영용 빌드를 만듭니다. 새 버전을 별도 실행해 확인한 다음 운영 서비스를 바꿉니다. 배포 시 기존 버전과 실행 설정을 남기고, 확인에 실패하면 이전 버전으로 되돌릴 수 있게 했습니다.

이번 운영기도 같은 방식으로 추가했습니다. 단순히 글을 대신 쓰는 데서 끝나지 않고 메인 카드, 상세 페이지, 한·영 콘텐츠, 계산기와 검색에 필요한 사례 데이터까지 연결합니다.

05요청을 처리하는 에이전트와, 평소 돌아가는 자동화

제작·수정·신규 배포는 제가 요청하면 에이전트가 이어서 실행합니다. 서비스 유지와 인증서 갱신처럼 반복 주기가 명확한 일은 실행 관리자와 예약 작업에 맡겼습니다. 웹 서비스는 계속 실행되도록 관리하고 인증서 갱신 여부는 하루 두 번 확인합니다.

문제가 생기면 에이전트가 상태와 로그를 확인해 원인을 좁히고, 설정을 고친 뒤 공개 주소에서 다시 확인합니다. 제가 모든 관리 메뉴를 찾아다니는 수고는 줄지만, 장비 고장이나 회선 장애까지 저절로 해결되는 것은 아닙니다.

운영의 핵심은 한 번 설치한 뒤 방치하는 것이 아니라 요청 → 변경 → 점검 → 배포 → 복구를 같은 흐름으로 유지하는 데 있습니다.

06동시접속은 페이지 크기와 사용 방식에 따라 달라집니다

현재 서버에서 짧게 측정한 인터넷 업로드는 약 795.6Mbps였습니다. 기존 세 페이지의 초기 자체 자료량은 약 1.22~3.13MB였습니다. 계산에는 1인당 3.2MB와 전송 목표 5초, 회선 여유 30%를 적용했습니다.

795.6Mbps × 70% × 5초 ÷ (8 × 3.2MB) = 약 108명입니다. 이는 같은 시점에 페이지 자료를 받기 시작한다는 조건의 회선 계산입니다. 이미 글을 읽는 사람의 수와는 다른 지표입니다.

현재 Nginx의 연결 슬롯은 1,024개입니다. 방문자 연결뿐 아니라 내부 서버 연결도 포함하므로 이를 1,024명으로 해석할 수 없습니다. 1인당 활성 요청 연결을 3~6개로 가정하고 같은 여유를 남기면 계산 범위는 약 59~108명입니다.

따라서 60~100명 규모를 먼저 부하 시험할 목표로 제시합니다. 실제 최대 동시접속을 검증한 수치는 아닙니다. 큰 자료 다운로드, 영상, 전자칠판의 실시간 연결과 AI 응답은 별도로 시험해야 합니다. Lab 챗봇의 모델 응답은 현재 한 번에 하나씩 처리합니다.

07달라진 점은 비용보다, 생각을 바로 서비스로 옮기는 방식

별도의 유료 호스팅 서버를 임대하지 않고, 제가 가진 장비로 네 개의 공개 공간을 운영하게 됐습니다. 새 기능이 필요하면 정해진 관리 메뉴에서 가능한 항목을 찾는 대신, 원하는 결과를 설명하고 직접 구현합니다.

WordPress 자체는 무료 오픈소스입니다. 이 사례는 WordPress가 유료라는 뜻이 아니라, WordPress나 별도 호스팅 상품을 사용하지 않고 직접 만든 웹 앱을 개인 서버에서 운영한 경험입니다. 도메인, 인터넷, 전기, 장비와 AI 이용 비용은 남습니다.

제가 내용과 방향을 정하고 에이전트가 제작·연결·배포·점검을 이어가는 것. 홈페이지 하나를 만든 경험이 회사와 연구, 수업과 새로운 서비스를 계속 확장하는 운영 기반이 됐습니다.

적용 범위와 참고할 점

현재 서버의 서비스·DNS·HTTPS·유선 링크와 업로드를 확인해 정리했습니다. 동시접속 수는 페이지 자료량·전송 시간·연결 수를 가정한 계산이며, 외부 부하 시험으로 검증한 최대 인원이 아닙니다.

함께 읽을 자료

같은 분야의 사례 →
문서 제출 전 체크 · 무료 체험UPMI 익명 방문 통계 안내·중지