This project intends to be the go implementation of pttbbs/pttbbs.
Collaborating with Ptt-official-app middlewares. go-pttbbs intends to be web-based bbs.
You can start with the swagger api and try the api.
You can copy the curl command from the link if you encounter CORS issue.
You can do the following to start with docker-compose:
- copy
docs/etc/
to some etc directory (ex:/etc/go-pttbbs
). - copy
01-config.docker.ini
to the etc directory as production.ini (ex:cp 01-config.docker.ini /etc/go-pttbbs/production.ini
). - copy
docker_compose.env.template
todocker_compose.env
and modify the settings. ./scripts/docker_initbbs.sh [BBSHOME] pttofficialapps/go-pttbbs:latest
docker-compose --env-file docker_compose.env -f docker-compose.yaml up -d
- register SYSOP and guest (api.GUEST) at
http://localhost:3456/v1/register
- register your account at
http://localhost:3456/register
- login at
http://localhost:3456/v1/login
telnet localhost 8888
and use the account that you registered.
You can do the following to init bbs-home:
./scripts/docker_initbbs.sh [BBSHOME] pttofficialapps/go-pttbbs:latest
./scripts/docker_initpasswd.sh [BBSHOME] pttofficialapps/go-pttbbs:latest [N_USER]
You can do the following to increase users in docker:
- compile new docker image (as GOPTTBBS_IMAGE) with new MAX_USER in config.go
./scripts/docker_tunepasswd.sh [BBSHOME] [GOPTTBBS_IMAGE]
./scripts/test.sh
./scripts/coverage.sh
You can do the following to run with ./scripts/run.sh:
-
On Mac: put the following lines in /etc/sysctl.conf and reboot for 16M shared-mem:
kern.sysv.shmmax=16777216 kern.sysv.shmmin=1 kern.sysv.shmmni=128 kern.sysv.shmseg=32 kern.sysv.shmall=4096
For Mac Big Sur or after, the setting in
/etc/sysctl.conf
would be deprecated, therefore, we can use alternative way to set up shm. Copymemory.plist
daemon to/Library/LaunchDaemons
then rebootsudo cp memory.plist /Library/LaunchDaemons/memory.plist
-
Check that we do have 16M shared-mem
sysctl -a|grep shm
-
Init your own BBSHOME:
./scripts/docker_initbbs.sh [BBSHOME] pttofficialapps/go-pttbbs:latest
-
cp 02-config-run.go.template ptttype/02-config-run.go
-
cp 02-config.run.template.ini 02-config.run.ini
-
Setup BBSHOME in 02-config.run.ini
-
Do the following step ONLY IF you want to reset shared-mem:
ipcrm -M 0x000004cc
ipcrm -S 0x000007da
-
./scripts/run.sh
You can do the following do run updated-code in docker:
-
Modify the docker-compose.yaml and add the expected ports and mount directory in volumes:
ports: - "127.0.0.1:3456:3456" - "127.0.0.1:8889:8888" - "127.0.0.1:48764:48763" - "127.0.0.1:[local-port]:[docker-port]" volumes: - ${BBSHOME}:/home/bbs - ${ETC}:/etc/go-pttbbs - [local absolute directory]:/home/[username]/go-pttbbs
-
do docker-compose
-
docker container ls
and find the corresponding docker container -
docker exec -it [container] /bin/bash
-
cd /home/[username]/go-pttbbs
-
./scripts/run-in-docker.sh [docker-port]
Some config-variables are required const in ptttype, to be defined as Cstr (IDLEN, PASSLEN, etc.)
For the normal config-variables, we use config.ini as the configuration.
For the const config-variables in ptttype, We use 00-config-[dev-mode].go with +build flag
We use viper and .ini as our config-framework. 00-config.template.ini is the config-template file.
We have 3 files For every module with the config:
- 00-config.go: define the variables of the config.
- config.go: define the func of setting the variables from the config-file.
- config_util.go: helper functions. should be straightforward to follow.
We can customized ptttype/00-config-default.go with the following steps:
- Copy 00-config-production.go.template to ptttype/00-config-production.go and change the +build and variables accordingly.
cd go-pttbbs ; go build -tag [dev-mode]; cd ..
The swagger setup is based on flask-swagger, which is a python-project. You can do following for the swagger-api:
- setup the python virtualenv.
- cd apidoc; pip install . && pip uninstall apidoc -y && python setup develop; cd ..
- ./scripts/swagger.sh
- connect to http://localhost:8080