2014-12-01 15:15:52 +02:00
|
|
|
dockerfiles
|
|
|
|
===========
|
|
|
|
|
2016-05-07 09:40:16 +02:00
|
|
|
A collection of delicious docker recipes.
|
|
|
|
|
2015-09-20 06:09:08 +02:00
|
|
|
[![](https://travis-ci.org/vimagick/dockerfiles.svg)](https://travis-ci.org/vimagick/dockerfiles)
|
|
|
|
|
2016-01-14 11:26:01 +02:00
|
|
|
- :octocat: <https://github.com/vimagick/dockerfiles>
|
2016-01-20 04:36:30 +02:00
|
|
|
- :beetle: <https://github.com/vimagick/dockerfiles/issues>
|
2016-01-14 16:41:07 +02:00
|
|
|
- :book: <https://github.com/vimagick/dockerfiles/wiki>
|
2016-07-10 10:01:46 +02:00
|
|
|
- :whale: <https://hub.docker.com/u/vimagick/> (x86)
|
|
|
|
- :whale: <https://hub.docker.com/u/easypi/> (arm)
|
2015-04-18 10:05:22 +02:00
|
|
|
|
2017-10-19 06:40:12 +02:00
|
|
|
## Affiliates
|
2017-03-22 08:13:48 +02:00
|
|
|
|
2017-10-19 06:40:12 +02:00
|
|
|
[![](https://bandwagonhost.com/templates/organicbandwagon/images/logo.png)](https://bandwagonhost.com/aff.php?aff=21106)
|
2017-03-22 08:13:48 +02:00
|
|
|
[![](https://www.vultr.com/media/banner_1.png)](https://www.vultr.com/?ref=6821947)
|
2016-05-05 16:52:27 +02:00
|
|
|
|
2016-07-01 06:44:34 +02:00
|
|
|
## Todo
|
2015-07-07 16:19:08 +02:00
|
|
|
|
2016-07-01 06:44:34 +02:00
|
|
|
- [ ] caddy
|
|
|
|
- [ ] dsniff
|
|
|
|
- [ ] ettercap
|
|
|
|
- [ ] freelan
|
|
|
|
- [ ] gitbook
|
2015-07-08 05:34:43 +02:00
|
|
|
- [ ] gitolite
|
2015-07-07 16:19:08 +02:00
|
|
|
- [ ] hashcat
|
2016-07-01 06:44:34 +02:00
|
|
|
- [ ] imagemagick
|
|
|
|
- [ ] ipset
|
2015-07-07 16:19:08 +02:00
|
|
|
- [ ] irc
|
2016-07-01 06:44:34 +02:00
|
|
|
- [ ] libreswan
|
|
|
|
- [ ] mitmproxy
|
2016-07-01 16:15:28 +02:00
|
|
|
- [ ] nagios
|
2016-07-01 06:44:34 +02:00
|
|
|
- [ ] nfs
|
|
|
|
- [ ] openldap
|
|
|
|
- [ ] openswan
|
2016-10-11 10:01:56 +02:00
|
|
|
- [ ] postfix
|
2016-07-01 06:44:34 +02:00
|
|
|
- [ ] pritunl
|
|
|
|
- [ ] pyinstaller
|
|
|
|
- [ ] rtmpdump
|
2016-01-22 04:40:23 +02:00
|
|
|
- [ ] sensu
|
2016-10-15 08:12:17 +02:00
|
|
|
- [ ] ssf
|
2015-07-07 16:19:08 +02:00
|
|
|
- [ ] tshark
|
2016-07-01 06:44:34 +02:00
|
|
|
- [ ] youtube-upload
|
2015-07-07 16:19:08 +02:00
|
|
|
|
2018-07-22 14:57:36 +02:00
|
|
|
## Big Data
|
|
|
|
|
2018-07-27 20:55:18 +02:00
|
|
|
- [x] kafka-arm
|
2018-07-22 14:57:36 +02:00
|
|
|
- [x] kafka-manager
|
2018-08-21 12:06:54 +02:00
|
|
|
- [x] presto-server
|
2018-07-28 04:51:01 +02:00
|
|
|
- [x] superset-arm
|
2018-07-22 14:57:36 +02:00
|
|
|
- [x] zookeeper-arm
|
|
|
|
|
2016-10-31 06:57:30 +02:00
|
|
|
## IoT
|
|
|
|
|
2017-04-22 06:19:52 +02:00
|
|
|
- [x] hass :+1:
|
|
|
|
- [x] hbdg :+1:
|
2016-10-31 06:57:30 +02:00
|
|
|
- [x] node-red :+1:
|
2017-04-22 06:19:52 +02:00
|
|
|
- [x] mosquitto :+1:
|
2016-10-31 06:57:30 +02:00
|
|
|
|
2017-10-02 05:04:15 +02:00
|
|
|
## Automation
|
|
|
|
|
|
|
|
- [x] drone-rsync-arm
|
2017-10-02 10:01:47 +02:00
|
|
|
- [x] drone-scp-arm
|
|
|
|
- [x] drone-ssh-arm
|
|
|
|
- [x] errbot :octocat:
|
|
|
|
- [x] hubot :octocat:
|
2017-10-02 05:04:15 +02:00
|
|
|
- [x] jenkins-arm :beetle:
|
|
|
|
|
2016-07-01 06:44:34 +02:00
|
|
|
## Daemon
|
2015-07-07 16:19:08 +02:00
|
|
|
|
2015-09-19 17:52:35 +02:00
|
|
|
- [x] alpine-arm :+1:
|
2015-09-03 04:46:51 +02:00
|
|
|
- [x] aria2 :+1:
|
2015-08-15 22:37:38 +02:00
|
|
|
- [x] audiowaveform
|
2016-01-28 12:00:25 +02:00
|
|
|
- [x] cadvisor
|
2015-09-13 06:11:19 +02:00
|
|
|
- [x] casperjs :+1:
|
2015-07-06 02:43:11 +02:00
|
|
|
- [x] collectd
|
2018-11-28 08:05:02 +02:00
|
|
|
- [x] freegeoip
|
2016-07-28 18:07:14 +02:00
|
|
|
- [x] freeradius
|
2017-11-02 14:22:53 +02:00
|
|
|
- [x] frp :cn:
|
2017-03-11 12:05:03 +02:00
|
|
|
- [x] graphite
|
2015-08-28 11:30:27 +02:00
|
|
|
- [x] h2o
|
2016-01-14 11:20:38 +02:00
|
|
|
- [x] httpbin :+1:
|
2015-08-15 22:37:38 +02:00
|
|
|
- [x] influxdb
|
2017-12-26 15:22:11 +02:00
|
|
|
- [x] logstash
|
2017-05-24 09:26:14 +02:00
|
|
|
- [x] luigi
|
2016-03-06 16:45:23 +02:00
|
|
|
- [x] mariadb
|
2016-06-03 05:23:51 +02:00
|
|
|
- [x] mariadb-arm
|
2015-07-06 02:43:11 +02:00
|
|
|
- [x] monit
|
2015-12-28 06:22:35 +02:00
|
|
|
- [x] moodle :beetle:
|
2015-12-08 18:57:14 +02:00
|
|
|
- [x] mosquitto
|
2016-01-03 09:07:50 +02:00
|
|
|
- [x] motion-arm :+1:
|
2015-07-06 02:43:11 +02:00
|
|
|
- [x] nginx
|
2016-07-06 19:57:13 +02:00
|
|
|
- [x] nifi
|
2019-05-25 13:47:03 +02:00
|
|
|
- [x] ntopng
|
2016-01-31 08:33:49 +02:00
|
|
|
- [x] nullmailer
|
2016-01-31 13:40:31 +02:00
|
|
|
- [x] nullmailer-arm
|
2016-08-18 08:38:20 +02:00
|
|
|
- [x] openhab
|
2016-07-01 16:15:28 +02:00
|
|
|
- [x] openssh
|
2017-03-31 10:35:00 +02:00
|
|
|
- [x] ot-recorder
|
|
|
|
- [x] ot-recorder-arm
|
2016-08-20 10:00:05 +02:00
|
|
|
- [x] piknik
|
2016-02-03 09:35:22 +02:00
|
|
|
- [x] portia
|
2015-06-24 13:27:11 +02:00
|
|
|
- [x] pure-ftpd
|
2016-01-16 01:54:16 +02:00
|
|
|
- [x] redis-arm
|
2018-02-06 12:08:53 +02:00
|
|
|
- [x] rinetd
|
2016-09-19 08:27:44 +02:00
|
|
|
- [x] rslsync
|
2015-07-13 16:52:11 +02:00
|
|
|
- [x] rsyncd
|
2016-10-29 10:12:00 +02:00
|
|
|
- [x] rsyslog
|
2016-04-07 02:35:31 +02:00
|
|
|
- [x] samba :+1:
|
2016-05-06 16:44:49 +02:00
|
|
|
- [x] samba-arm :+1:
|
2015-09-03 04:46:51 +02:00
|
|
|
- [x] scrapyd :+1:
|
2017-06-28 12:03:57 +02:00
|
|
|
- [x] statsd
|
2016-01-28 19:46:55 +02:00
|
|
|
- [x] swarm-arm
|
2015-07-06 02:43:11 +02:00
|
|
|
- [x] taskd
|
2016-06-01 08:54:18 +02:00
|
|
|
- [x] telegraf
|
2016-11-02 11:23:46 +02:00
|
|
|
- [x] tftpd
|
2015-09-20 06:12:00 +02:00
|
|
|
- [x] tmail :beetle:
|
|
|
|
- [x] urlwatch :beetle:
|
2016-06-17 12:06:40 +02:00
|
|
|
- [x] vnstat
|
2016-01-31 17:04:20 +02:00
|
|
|
- [x] vsftpd
|
2015-11-05 06:20:42 +02:00
|
|
|
- [x] webhook
|
2015-09-20 06:12:00 +02:00
|
|
|
- [x] webkit :beetle:
|
2016-07-03 16:01:27 +02:00
|
|
|
|
2016-07-07 11:30:08 +02:00
|
|
|
## Media
|
2016-07-03 16:01:27 +02:00
|
|
|
|
2017-04-29 04:18:23 +02:00
|
|
|
- [x] cmus
|
|
|
|
- [x] cmus-arm
|
2016-07-03 16:01:27 +02:00
|
|
|
- [x] ffmpeg
|
2016-07-07 12:17:27 +02:00
|
|
|
- [x] ffmpeg-arm
|
2016-07-07 11:30:08 +02:00
|
|
|
- [x] ffserver :beetle:
|
2016-07-09 20:19:09 +02:00
|
|
|
- [x] icecast
|
2016-07-07 11:30:08 +02:00
|
|
|
- [x] live555
|
|
|
|
- [x] minidlna
|
2016-08-17 05:09:57 +02:00
|
|
|
- [x] mpd
|
2016-07-08 00:39:29 +02:00
|
|
|
- [x] murmur
|
2017-09-30 15:02:33 +02:00
|
|
|
- [x] openmeetings
|
2016-07-07 11:30:08 +02:00
|
|
|
- [x] plex :moneybag:
|
|
|
|
- [x] red5 :+1:
|
|
|
|
- [x] red5-arm :construction:
|
2016-07-07 12:17:27 +02:00
|
|
|
- [x] rtmp-client-arm :+1:
|
2016-07-07 11:30:08 +02:00
|
|
|
- [x] rtmp-server
|
2017-08-13 12:15:26 +02:00
|
|
|
- [x] shairplay-arm
|
2016-09-17 18:59:19 +02:00
|
|
|
- [x] shoutcast
|
2016-07-08 15:01:29 +02:00
|
|
|
- [x] tesseract
|
2016-11-15 02:41:05 +02:00
|
|
|
- [x] vnc2flv
|
2016-07-03 16:01:27 +02:00
|
|
|
- [x] youtube-dl
|
2016-07-07 11:30:08 +02:00
|
|
|
- [x] youtube-worker :beetle:
|
2015-07-07 16:19:08 +02:00
|
|
|
|
2016-07-01 06:44:34 +02:00
|
|
|
## Web
|
|
|
|
|
|
|
|
- [x] discuz :cn:
|
|
|
|
- [x] django-cms
|
|
|
|
- [x] dokuwiki :+1:
|
|
|
|
- [x] dokuwiki-arm :+1:
|
2017-05-21 03:01:03 +02:00
|
|
|
- [x] glances
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] gogs-arm :cn:
|
|
|
|
- [x] grafana
|
|
|
|
- [x] hugo
|
|
|
|
- [x] hugo-arm
|
|
|
|
- [x] jamapi
|
|
|
|
- [x] joomla
|
|
|
|
- [x] json-server
|
2016-07-04 08:03:16 +02:00
|
|
|
- [x] mantisbt
|
2016-07-10 14:03:02 +02:00
|
|
|
- [x] mediagoblin
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] nginad
|
|
|
|
- [x] nodebb :+1:
|
|
|
|
- [x] openrefine
|
|
|
|
- [x] phpbb
|
|
|
|
- [x] phpmyadmin-arm
|
|
|
|
- [x] phpvirtualbox-arm
|
|
|
|
- [x] piwik
|
|
|
|
- [x] revive
|
2016-07-18 07:02:30 +02:00
|
|
|
- [x] zoneminder :+1:
|
2016-07-01 06:44:34 +02:00
|
|
|
|
2017-12-19 09:09:16 +02:00
|
|
|
## E-commerce
|
|
|
|
|
|
|
|
- [x] magento :shopping:
|
|
|
|
- [x] opencart :shopping:
|
|
|
|
- [x] prestashop :shopping:
|
|
|
|
|
2016-07-01 06:44:34 +02:00
|
|
|
## Security
|
|
|
|
|
2018-09-01 03:43:28 +02:00
|
|
|
- [x] aircrack-ng-arm
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] bro
|
|
|
|
- [x] clamav
|
2016-07-19 08:28:16 +02:00
|
|
|
- [x] dsniff
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] ferm
|
2016-10-27 05:34:22 +02:00
|
|
|
- [x] grr
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] hydra
|
|
|
|
- [x] iptables
|
2018-09-01 07:25:19 +02:00
|
|
|
- [x] kismet
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] routersploit
|
|
|
|
- [x] snort :beetle:
|
2016-07-19 04:51:17 +02:00
|
|
|
- [x] sslsplit
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] webgoat
|
|
|
|
|
|
|
|
## Proxy
|
|
|
|
|
|
|
|
- [x] dante
|
|
|
|
- [x] delegated
|
|
|
|
- [x] fteproxy :+1:
|
|
|
|
- [x] fteproxy-arm :+1:
|
2016-10-28 16:24:03 +02:00
|
|
|
- [x] hans
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] haproxy-arm
|
2016-08-10 09:25:53 +02:00
|
|
|
- [x] kcptun :cn:
|
2019-04-15 10:01:05 +02:00
|
|
|
- [x] mtproxy
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] mysql-proxy
|
|
|
|
- [x] ngrok :+1:
|
|
|
|
- [x] obfsproxy
|
|
|
|
- [x] polipo
|
|
|
|
- [x] privoxy
|
|
|
|
- [x] privoxy-arm
|
|
|
|
- [x] proxyhub
|
|
|
|
- [x] shadowsocks
|
|
|
|
- [x] shadowsocks
|
|
|
|
- [x] shadowsocks-libev :+1:
|
|
|
|
- [x] shadowsocks-arm
|
|
|
|
- [x] shadowsocks-libev-arm :+1:
|
2016-11-24 18:04:43 +02:00
|
|
|
- [x] spiped
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] squid
|
2016-07-11 07:14:59 +02:00
|
|
|
- [x] stunnel
|
2016-07-11 08:39:42 +02:00
|
|
|
- [x] stunnel-arm
|
2016-11-05 15:31:25 +02:00
|
|
|
- [x] tinyproxy
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] tor
|
2016-09-09 10:44:23 +02:00
|
|
|
- [x] traefik-arm
|
2016-07-01 06:44:34 +02:00
|
|
|
|
|
|
|
## VPN
|
|
|
|
|
2019-05-30 13:39:48 +02:00
|
|
|
- [x] n2n :+1:
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] ocserv :+1:
|
|
|
|
- [x] openconnect
|
2016-07-11 09:26:35 +02:00
|
|
|
- [x] openconnect-arm
|
|
|
|
- [x] openvpn-arm
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] pptp
|
2016-07-11 11:30:09 +02:00
|
|
|
- [x] pptp-arm
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] pptpd
|
|
|
|
- [x] shadowvpn
|
|
|
|
- [x] strongswan :+1:
|
|
|
|
- [x] tinc :+1:
|
2016-07-13 05:41:21 +02:00
|
|
|
- [x] tinc-arm :+1:
|
2018-03-15 17:08:14 +02:00
|
|
|
- [x] xl2tpd
|
2016-07-01 06:44:34 +02:00
|
|
|
|
|
|
|
## DNS
|
|
|
|
|
|
|
|
- [x] chinadns
|
|
|
|
- [x] dnscrypt
|
|
|
|
- [x] dnscrypt-proxy
|
|
|
|
- [x] dnscrypt-wrapper
|
2016-07-01 16:15:28 +02:00
|
|
|
- [x] dnsmasq
|
|
|
|
- [x] dnsmasq-arm
|
2016-07-01 06:44:34 +02:00
|
|
|
- [x] pdnsd
|
|
|
|
|
2015-07-12 06:56:33 +02:00
|
|
|
## 3rd-party
|
|
|
|
|
2018-07-25 11:57:33 +02:00
|
|
|
- [x] tutum/builder
|
2018-11-08 12:02:28 +02:00
|
|
|
- [x] browserless/chrome
|
2016-07-29 08:51:39 +02:00
|
|
|
- [x] certbot
|
2019-06-09 01:34:48 +02:00
|
|
|
- [x] codercom/code-server
|
2019-05-02 01:11:16 +02:00
|
|
|
- [x] confluentinc/cp-kafka-mqtt
|
2019-05-01 02:54:06 +02:00
|
|
|
- [x] confluentinc/cp-kafka-rest
|
2019-03-02 15:02:32 +02:00
|
|
|
- [x] streamsets/datacollector
|
2018-07-25 11:57:33 +02:00
|
|
|
- [x] cachethq/docker
|
|
|
|
- [x] puckel/docker-airflow
|
2016-01-11 17:21:41 +02:00
|
|
|
- [x] drone/drone
|
2016-03-05 13:47:20 +02:00
|
|
|
- [x] drupal
|
2018-08-01 10:03:18 +02:00
|
|
|
- [x] elastalert
|
2016-10-29 09:20:25 +02:00
|
|
|
- [x] elk
|
2019-02-18 10:18:50 +02:00
|
|
|
- [x] mher/flower
|
2015-08-31 01:53:16 +02:00
|
|
|
- [x] ghost
|
2015-09-21 04:22:39 +02:00
|
|
|
- [x] gitlab/gitlab-ce
|
2018-08-05 13:04:47 +02:00
|
|
|
- [x] gliderlabs/logspout
|
2015-09-21 04:22:39 +02:00
|
|
|
- [x] gliderlabs/registrator
|
2016-07-01 06:44:34 +02:00
|
|
|
- [ ] glot
|
|
|
|
- [ ] bash
|
|
|
|
- [ ] python
|
2016-04-25 10:34:42 +02:00
|
|
|
- [x] gogs :cn:
|
2016-06-15 05:08:00 +02:00
|
|
|
- [x] haproxy
|
2018-10-25 10:10:22 +02:00
|
|
|
- [x] jmxtrans/jmxtrans
|
2018-07-22 14:57:36 +02:00
|
|
|
- [x] wurstmeister/kafka
|
2018-11-09 04:53:44 +02:00
|
|
|
- [x] netdata/netdata
|
2018-01-29 15:19:05 +02:00
|
|
|
- [x] nextcloud
|
2016-06-06 18:51:39 +02:00
|
|
|
- [x] jazzdd/phpvirtualbox
|
2016-05-03 08:05:55 +02:00
|
|
|
- [x] jenkins
|
2016-05-27 07:24:39 +02:00
|
|
|
- [x] jupyter/notebook
|
2016-09-19 08:27:44 +02:00
|
|
|
- [x] kylemanna/openvpn
|
2019-01-22 11:47:49 +02:00
|
|
|
- [x] metabase/metabase
|
2017-10-30 02:08:25 +02:00
|
|
|
- [x] metasploitframework/metasploit-framework :skull:
|
2017-10-03 06:33:31 +02:00
|
|
|
- [x] minio/minio
|
2016-02-02 11:15:48 +02:00
|
|
|
- [x] mongo
|
2016-04-22 18:00:45 +02:00
|
|
|
- [x] neo4j
|
2017-09-06 11:23:27 +02:00
|
|
|
- [x] odoo
|
2018-10-30 09:56:55 +02:00
|
|
|
- [x] osixia/openldap
|
2019-02-15 13:25:53 +02:00
|
|
|
- [x] campbellsoftwaresolutions/osticket
|
2015-08-26 17:47:10 +02:00
|
|
|
- [x] owncloud
|
2016-06-03 07:19:58 +02:00
|
|
|
- [x] phpmyadmin
|
2018-08-25 05:33:37 +02:00
|
|
|
- [x] pihole/pihole
|
2017-03-23 10:34:07 +02:00
|
|
|
- [x] portainer/portainer :+1:
|
2016-12-07 03:35:42 +02:00
|
|
|
- [x] postgres
|
2019-05-01 03:24:01 +02:00
|
|
|
- [x] postgrest/postgrest
|
2016-06-18 08:57:59 +02:00
|
|
|
- [x] registry
|
2015-08-26 18:29:37 +02:00
|
|
|
- [x] rocket.chat
|
2019-05-26 11:26:14 +02:00
|
|
|
- [x] rundeck/rundeck
|
2015-09-21 04:22:39 +02:00
|
|
|
- [x] scrapinghub/splash
|
2015-09-22 18:35:28 +02:00
|
|
|
- [ ] selenium
|
|
|
|
- [ ] hub
|
|
|
|
- [ ] node-firefox
|
|
|
|
- [x] standalone-firefox
|
2019-01-11 08:35:28 +02:00
|
|
|
- [x] sentry
|
2018-07-28 02:45:54 +02:00
|
|
|
- [x] amancevice/superset
|
2017-10-07 08:59:37 +02:00
|
|
|
- [x] v2ray/official :cn:
|
2018-07-25 11:57:33 +02:00
|
|
|
- [x] centurylink/watchtower
|
2019-04-17 18:38:22 +02:00
|
|
|
- [x] anapsix/webdis
|
2017-05-19 07:29:40 +02:00
|
|
|
- [x] wekanteam/wekan
|
2019-02-12 12:28:09 +02:00
|
|
|
- [x] yourls
|
2017-09-13 11:31:46 +02:00
|
|
|
- [x] zookeeper
|
2019-01-09 08:52:04 +02:00
|
|
|
- [x] elkozmon/zoonavigator
|
2015-07-12 06:56:33 +02:00
|
|
|
|
2016-01-01 20:19:43 +02:00
|
|
|
## auto-completion
|
|
|
|
|
|
|
|
```bash
|
|
|
|
#!/bin/bash
|
|
|
|
#
|
|
|
|
# handy auto-completion for docker-exec
|
|
|
|
#
|
|
|
|
|
|
|
|
enter() {
|
|
|
|
local name=${1:?}
|
|
|
|
docker exec -it $name sh -c 'exec $(command -v bash || command -v sh)'
|
|
|
|
}
|
|
|
|
|
|
|
|
__enter() {
|
|
|
|
local cur=${COMP_WORDS[COMP_CWORD]}
|
|
|
|
for cid in $(docker ps -q)
|
|
|
|
do
|
|
|
|
local name=$(docker inspect -f '{{.Name}}' $cid)
|
|
|
|
name=${name#/}
|
|
|
|
if [[ $name = $cur* ]]
|
|
|
|
then
|
|
|
|
COMPREPLY+=("$name")
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
complete -F __enter enter
|
|
|
|
```
|