This document explains how to install ThinkfreeOffice in a Kubernetes environment. This document was written based on the client's specifications, and the installation can proceed only if the following configuration is ready.
- A Kubernetes environment must be set up in advance for Kubernetes deployment.
- The environment where you intend to deploy must be granted sufficient permissions for deployment.
- If either of the two above is not in place, you must contact the client's operations manager to resolve the issue.
- kubectl and helm must be installed in the terminal environment.
- If it is not installed, please follow the guide below to install it.
- You must obtain Docker-hub authentication information for Thinkfree deployment.
- You can obtain Docker-hub authentication information through a Thinkfree representative here.
Preparation
kubectl installation
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.36.2/2026-07-05/bin/linux/amd64/kubectl chmod +x ./kubectl && sudo mv ./kubectl /usr/local/bin
You can check if it was installed correctly using the following command.
kubectl version --client Client Version: v1.36.2-eks-8f14419Kustomize Version: v5.8.1
Helm installation
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-4 | bash
You can check if it was installed correctly using the following command.
helm version --short v4.3.0+gbec5b06
Install ThinkfreeOffice
The installation is performed using a Helm chart.
1. Setting variable values
TOKEN=""RELEASE_NAME=""VERSION=""
- TOKEN: Enter the TOKEN value received from the Thinkfree representative.
- RELEASE_NAME: This section corresponds to the Chart's Release Name. You can enter any unique name. (e.g., thinkfree)
- VERSION : Enter the version of the Chart you want to install. (e.g., 17.0.0)
2. Docker Authentication
echo ${TOKEN} | docker login -u thinkfree --password-stdin
3. Installation
helm upgrade --install ${RELEASE_NAME} oci://registry-1.docker.io/thinkfree/office-chart -n thinkfree --create-namespace \ --version ${VERSION} \ --set global.image.registryCredentials.enabled=true \ --set global.image.registryCredentials.username=thinkfree \ --set global.image.registryCredentials.password=${TOKEN}
ThinkfreeOffice test
Once the installation is complete, the following message is displayed.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡿⣟⣿⣻⣿⣻⣟⣿⣟⣿⣻⣿⣳⣦⣄⠀⠀⠀⠀⠀⠀⢠⡰⣜⢮⡫⣏⢯⡫⣏⢯⡫⣏⢯⡫⡯⠀⠀
⠀⠀⣿⣻⣽⣟⣾⣯⢿⣳⣿⣽⢷⣿⣽⢷⣟⣧⡄⠀⠀⢀⢼⢕⣝⢮⡳⡝⣎⢗⣝⢎⣗⢝⣎⢗⣝⢮⠀⠀
⠀⠀⣯⣿⢾⣯⡷⣿⣻⡿⣞⣯⡿⣷⣟⣿⣽⡷⣷⠀⠀⡮⣳⢳⢕⡗⡵⣝⢮⡳⣕⢗⣕⢗⣕⢗⣕⢗⠀⠀
⠀⠀⠈⠈⠁⠁⠉⠈⠈⠈⠁⠁⠉⢿⣾⣻⣾⣻⡿⡅⠨⣺⡪⣳⢳⡹⡕⠁⠁⠈⠈⠈⠀⠁⠈⠈⠀⠁⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⣾⣻⡾⣯⣿⡂⠨⡺⣜⢮⡳⣝⢎⠀⠀⠀⡠⣔⢦⡢⡄⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⣯⣷⢿⣻⣾⡂⠨⡫⡮⣳⡹⣜⢕⠀⠀⡪⣏⢮⡳⡝⡮⡢⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⡷⣟⣿⣯⣷⠅⠨⡳⣝⢮⡺⡪⡇⠀⠀⡫⡮⡳⣝⢮⡫⡎⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⣟⣯⣷⢿⣾⠅⠨⡳⣕⢗⣝⡝⡎⠀⠀⠈⠪⠫⡺⠪⠊⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⣯⡿⣾⢿⣽⠅⠨⣝⢮⢳⢕⢽⡱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⡷⣿⣻⣿⣽⠅⠨⣺⢪⣫⢳⡳⡕⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⣟⣯⣿⢾⣯⡃⠨⢮⡳⣕⢗⣕⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢽⣯⡿⣾⢿⣽⡂⠨⡳⣝⢼⢕⢧⢇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠽⡷⢿⢻⠿⡽⡂⠨⡳⠵⢝⠮⡳⠣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
===================================================================================
TEST INSTALL - NOT FOR PRODUCTION
MongoDB runs on emptyDir (mongodb.persistence.enabled=false, the chart default). Documents, accounts,
settings and the initialization marker are lost whenever a MongoDB pod is recreated (node drain, OOM kill,
upgrade). After such a loss re-run the startup Job with `helm upgrade`; application data cannot be recovered.
For a production environment do NOT upgrade this release into one. Uninstall it and install again with
persistent storage. Data created in this test install is not carried over.
helm --namespace thinkfree uninstall thinkfree
helm --namespace thinkfree install thinkfree <chart> \
--set mongodb.persistence.enabled=true \
--set mongodb.persistence.storageClass=<name from: kubectl get storageclass>
A persistent install refuses to start without a StorageClass name.
===================================================================================
Thank you for installing ThinkfreeOffice (office-chart-17.0.0, release thinkfree).
Datastores : MongoDB built-in x1 (ReplicaSet wo-hancom-mongo-repl)
Redis built-in x1 + Sentinel x1 (quorum 1)
Volumes : MongoDB emptyDir - TEST INSTALL, see the notice above
Redis emptyDir (snapshot not kept; replicas re-sync from the master)
1. Wait for the one-shot initialization Job (accounts, ReplicaSet, Redis/Sentinel, settings):
kubectl --namespace thinkfree get jobs -l app=thinkfree-office-startup
kubectl --namespace thinkfree logs -l app=thinkfree-office-startup --tail=-1
Application pods stay in Init (wait-for-init) until the Job has completed.
2. Get ThinkfreeOffice administrator URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace thinkfree -l "app=thinkfree-office-was" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace thinkfree port-forward --address 0.0.0.0 $POD_NAME 8080:8070
3. Open your browser and access the ThinkfreeOffice admin page via the following URL:
http://127.0.0.1:8080/cloud-office
(Log in using the default ID "cloud" and password "weboffice". Please note that container initialization may take some time)
4. Register the license key you received on the admin page.
(If you do not have a license key, please refer to https://developers.thinkfree.com/docs/office/set-up-office/)
5. To test the setup, click the directory icon in the 'External linkage' menu to open the 'File Browser'
6. Click a sample document to open it in ThinkfreeOffice.The guide displayed after installation is for the ThinkfreeOffice test environment. (Not for production environments)
To switch to the production environment, you must remove the chart installed for the test environment using the following command and then reinstall it.
helm --namespace thinkfree uninstall ${RELEASE_NAME}
Afterward, you must first build an external volume for data storage and then install using the following command
(please contact the customer's operations manager for inquiries regarding building an external volume).
helm upgrade --install ${RELEASE_NAME} oci://registry-1.docker.io/thinkfree/office-chart -n thinkfree --create-namespace \ --version ${VERSION} \ --set global.image.registryCredentials.enabled=true \ --set global.image.registryCredentials.username=thinkfree \ --set global.image.registryCredentials.password=${TOKEN} \ --set mongodb.persistence.enabled=true \ --set mongodb.persistence.storageClass=<storage-class>- <storage-class> : The name of the StorageClass object used when building the external volume.
If this name does not exist, the container installation will fail.
- Wait until the initialization container finishes loading.
- Forward port 8080 to allow access to the end-point URL.
- Open a browser and access the ThinkfreeOffice administrator page.
- Register the license key.
- Open 'File Explorer' by clicking the directory icon in the 'External Links' menu.
- Click the sample document (sample.docx | sample.xlsx | sample.pptx) to open it in ThinkfreeOffice.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article