具体的使用方法可参考 API 文档
sudo ./docker-build-sso.sh // 构建 SSO API Server 镜像
sudo ./docker-build-landevice.sh // 构建 LANDevice 镜像
sudo ./docker-build-checkbot.sh // 构建 Checkbot 镜像
docker run --restart always -d -e REDIS_HOST=... \
-e MYSQL_HOST=... \
-e MYSQL_PASSWORD=... \
-e MYSQL_DB=... \
-e MYSQL_USER=... \
-e SERVER_HOST_NAME=sso.starstudio.org \
-p 8000:80 \
-v /home/www/StarSSO/conf:/etc/StarSSO \
-v /home/www/StarSSO/log:/var/log/StarSSO \
starsso:1.0.1
docker run --restart always -d --network host \
-e REDIS_HOST=... \
-e MONITOR_INTERFACE=...\
-v /home/www/landevice/conf:/etc/LANDevice \
-v /home/www/landevice/log:/var/log/LANDevice \
landevice:1.0.1
docker run --restart always -d -e REDIS_HOST=... \
-e MYSQL_HOST=... \
-e MYSQL_PASSWORD=... \
-e MYSQL_DB=... \
-e MYSQL_USER=... \
-v /home/www/CheckBot/conf:/etc/CheckBot \
-v /home/www/CheckBot/log:/var/log/CheckBot \
checkbot:1.0.1
身份管理、认证服务器,支持单点登录,提供Restful API。
推荐使用 virtualenv 进行部署,在虚拟环境中安装依赖。
pip install -r requirements.txt
在环境变量 API_CFG 指定配置文件位置。
export LAN_DEV_PROBER_CONFIG=<配置文件绝对路径>
生产环境请使用 gunicorn 部署,以保证性能。
设备感知服务,主动感知局域网内在线设备,提供子网内设备信息列表(MAC、IP、设备名等信息),并产生设备活动事件(加入、移除、设备名更新、DHCP重分配等事件),供其他服务使用。所有信息经过 Redis 实现订阅/发布。
推荐使用 virtualenv 进行部署,在虚拟环境中安装依赖。
pip install -r requirements_landevice.txt
在环境变量 LAN_DEV_PROBER_CONFIG 指定配置文件位置。
export LAN_DEV_PROBER_CONFIG=<配置文件绝对路径>
python -m LANDevice
会阻塞,生产环境建议使用supervisor。
人员统计服务,结合设备绑定信息,自动统计成员进出情况。
推荐使用 virtualenv 进行部署,在虚拟环境中安装依赖。
pip install -r requirements_checkbot.txt
在环境变量 CHECK_BOT_CONFIG 指定配置文件位置。
export CHECK_BOT_CONFIG=<配置文件绝对路径>
三个项目的配置都类似,可以共用一个配置文件
#
# Configure SSO API Server
#
# Logging
ACCESS_LOG = 'access.log' # 日志文件
ERROR_LOG = 'error.log'
DEBUG_LOG = 'debug.log'
DEBUG = False # 调试模式
# Secret
SECRET_KEY_FILE = 'jwt.pri' # JWT 私钥
SECRET_KEY_FILE_MODE = 0o600 # 私钥文件权限
PUBLIC_KEY_FILE = 'jwt.pub' # JWT 公钥
PUBLIC_KEY_MODE = 0o666 # 公钥文件权限
SALT_FILE = 'starstudio.salt' # 密码散列盐
SALT_FILE_MODE = 0o600 # 文件权限
AUTH_TOKEN_EXPIRE_DEFAULT = 86400 # Auth 类型 Token 的有效时间 (秒)
APP_TOKEN_EXPIRE_DEFAULT = 86400 # Application 类型 Token 的有效时间 (秒)
# Database
MYSQL_DATABASE_HOST = 'localhost' # 数据库配置
MYSQL_DATABASE_PORT = 3306
MYSQL_DATABASE_USER = 'root'
MYSQL_DATABASE_PASSWORD = None
MYSQL_DATABASE_DB = 'starstudio'
MYSQL_DATABASE_CHARSET = 'utf8'
# Access contaol # 权限控制
ALLOW_REGISTER = True # 允许外部注册
ALLOW_ANONYMOUS_GROUP_INFO = True # 允许匿名访问小组信息,以方便注册
USER_INITIAL_ACCESS = frozenset([
'auth', 'read_self', 'read_internal', 'read_other', 'write_self', 'read_group'
])
APP_INITIAL_ACCESS = frozenset([
'auth', 'read_self'
])
# Web console
SSO_WEB_REDIRECT_PREFIX = 'http://sso.local.com/' # 内部 SSO 管理面板登录的Redirect前缀
#
# LAN Device discover service.
# CheckBot service.
#
LAN_DEV_REDIS_HOST = '' # Redis
LAN_DEV_REDIS_PORT = ''
LAN_DEV_REDIS_PROBER_IDENT_PREFIX = 'LANDEV_DEFAULT' # Redis key前缀,用于区分应用
LAN_DEV_LIVENESS_TRACK_INTERVAL = 5 # 进行设备存活测试的时间间隔
LAN_DEV_LIVENESS_PROBE_TIMEOUT = 5 # 进行设备发现超时时间
# 若设备在此时间内无响应,则判断
# 设备不存在
LAN_DEV_LIVENESS_PROBE_INTERVAL = 30 # 进行设备发现的时间间隔
LAN_DEV_INTERFACE = 'wlp3s0' # 进行设备感知的接口名称