Introduction# This article explains the procedure for migrating an Omeka-S environment set up with Docker Compose, including volume data, to another server. You can proceed with the migration safely while maintaining data integrity.
Environment# Source server : Ubuntu 22.04Destination server : Ubuntu 22.04 (new setup)Stack : Omeka-S + MariaDB + phpMyAdmin + Traefik + MailpitMigration Flow# Backup on the source server Download to local machine Docker environment setup on the destination server Data restoration and startup Step 1: Backup on the Source Server# 1.1 Check the Current Environment# # d # d o o C c C c h k h k e e e e c r c r k k p r s D o u o l n c u n k m i e e n r g l s c o o l n u t m a e i s n e r s Output example:
D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
1.2 Create Backup Files# # c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . Output example:
- - r r w w - - r r - - - - r r - - - - 1 1 r r o o o o t t r r o o o o t t 1 5 . 9 1 M G O O c c t t 1 1 6 6 1 1 7 7 : : 0 0 2 4 o p p t t / o m m e e k k a a - - b v a o c l k u u m p e - s 2 - 0 2 2 0 5 2 1 5 0 1 1 0 6 1 . 6 t . a t r a . r g . z g z 1.3 Change Backup File Permissions# Change ownership to the current user for downloading:
s s u u d d o o c c h h o o w w n n $ $ U U S S E E R R : : $ $ U U S S E E R R o p p t t / o m m e e k k a a - - b v a o c l k u u m p e - s 2 - 0 2 2 0 5 2 1 5 0 1 1 0 6 1 . 6 t . a t r a . r g . z g z Step 2: Download to Local Machine# Run on your local machine terminal:
# c # s s # l d c c s M D p p V o ~ o e - v / w u u r l e D n s s i h o l e e f t w o r r y o o n a @ @ m l d s s d e d o o o o k o a f u u w a w d i r r n - n s l c c l * l e e e o . o s - - a t a s s d a d v e e r i r r . d a v v g i e e z r S r r e C - - c P i i t p p o : : r / y o p p t t / o m m e e k k a a - - b v a o c l k u u m p e - s 2 - 0 2 2 0 5 2 1 5 0 1 1 0 6 1 . 6 t . a t r a . r g . z g z Note : The 1.1GB file may take a while to download.
Step 3: Setting Up the Destination Server# 3.1 System Update# s s u u d d o o a a p p t t u u p p d g a r t a e d e - y
3.2 Remove Existing Docker Packages (Clean Install)# f d o o r s n u e p d k o g a i p n t - d g o e c t k e r r e . m i o o v e d o $ c p k k e g r - d o c d o c k e r - c o m p o s e d o c k e r - c o m p o s e - v 2 p o d m a n - d o c k e r c o n t a i n e r d r u n c ; d o
3.3 Add Docker Official Repository# # s s s s s # e s u u u u u c u A d d d d d A h " $ s d d o o o o o d o d ( u o d d e . d a a i c c b a G p p n u h r p P t t s r m e [ e t t G - - t l o p a t e - g g a d o r c e g k e e l - s c / e e t t l f a i h o / t y s + t = s e u i - S r o $ - t u p n m L r ( r c p d s / y d e / d a t 0 h e p l a a t a 7 t t k e p t e l 5 t c g a t e l 5 p / s / s a e s c - : p - o a d / t p & u - / r & r c d k i c e e o e n e e r t w y t c s t c n r - h . i / l i a o l f a o n r i i p a g c " s c t d s h $ t a / . / i { . t k d d t U d e e o o e B / s y c c c U d r k k t N o c i e e u T c u n r r r U k r g . . e _ e l s c a ) C r o s O . m c s D l / i E i l g N s i n A t n e M u d E > x - : / b - / u y $ d b = V e u / E v n e R / t t S n u c I u / / O l g a N l p p _ g t C / O k D e E y N / r A e i M t n E c g } / s " a / ) p d t o s / c t k k a e e b y r l r . e i a " n s g c | s ] / d h o t c t k p e s r : . / a / s d c o w n l o a d . d o c k e r . c o m / l i n u x / u b u n t u \ 3.4 Install Docker Engine# s u d o a p t - g e t i n s t a l l d o c k e r - c e d o c k e r - c e - c l i c o n t a i n e r d . i o d o c k e r - b u i l d x - p l u g i n d o c k e r - c o m p o s e - p l u g i n
3.5 Verify Installation# D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
0
3.6 Set Docker Execution Permissions for Regular Users# D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
1
Step 4: Data Transfer and Restoration# 4.1 Upload Backup Files# Run from your local machine:
D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
2
D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
3
4.3 Restore Docker Volumes# First, create containers (without starting them) to prepare the volumes:
D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
4
Next, restore data from backup to volumes:
D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
5
What this command does :
-v omeka-s-docker_omeka:/data/omeka: Omekaのボリュームをマウント-v omeka-s-docker_mariadb:/data/mariadb: MariaDBのボリュームをマウント-v /opt:/backup: バックアップファイルのあるディレクトリをマウントalpine tar -xzf ...: Alpine Linuxイメージでtarコマンドを実行してデータを展開4.4 Verify Volumes# D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
6
Output example:
D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
7
Step 5: Start Containers# 5.1 Check Environment Variables# 起動前に、.envファイル(または.env.omekaなど)で以下を確認・設定します:
D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
8
Minimum required settings:
D l l R o o I c c V a a E l l R V o o O m m L e e U k k M a a E - - s s N - - A d d M o o E c c k k e e r r _ _ m o a m r e i k a a d b
9
5.2 Start Containers# # c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 0
5.3 Verify Startup# # c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 1
Troubleshooting# Problem 1: Empty Hostname Error in Traefik# Error message :
# c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 2
Solution :.envファイルでOMEKA_HOSTが設定されているか確認してください。
# c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 3
Problem 2: Database Connection Error# MariaDB may take time to start. Check the following:
# c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 4
Problem 3: Permission Error# # c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 5
Security Considerations# Automated Scanning on Public Servers# Once your server is public, automated scanning bots will immediately attempt to access it. It is normal to see access logs like the following:
# c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 6
These are bots searching for vulnerabilities. If all responses are 404 (Not Found) or 403 (Forbidden), there is no problem.
Recommended Security Measures# Firewall Configuration # c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 7
2. Install Fail2ban
# c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 8
3. Regular Updates
# c # s # s # l d u u s M B d B d a V o a o a o l e - o c c p r l e p k t k d o o i i h t u a u o m m o n f t p r p c e e p e y o k k k t o c - D e a a : t b p o c o r - - / a a t o n z c s s b r c / p f f k r - - a k * t i e u d d c - u . g o r n o o k c p t d u m c c u z a i r e k k p f f r r a k o - e e i . e t a l r r r l g c i - u m _ _ b e z t o b m o m a s o n a e \ m a c r c e r k y f k d k i u i u a a a p l p t : d / e - a / b o s $ d : m ( ( a / e e d a t d k t a p a a a c t p / t - . e r o a v o m / o ( + x e m l a % . k a u p Y a r m p % 1 i e r m G \ a s o % B d - x d ) b $ . ) ( . \ d 6 t a 0 a t M r e B . ) g + z % Y o % m m e % k d a ) - . s t - a d r o . c g k z e r - / C / d a t a . 9
Useful Alias Configuration# When using specific compose files and environment variable files, setting up aliases is convenient:
- - r r w w - - r r - - - - r r - - - - 1 1 r r o o o o t t r r o o o o t t 1 5 . 9 1 M G O O c c t t 1 1 6 6 1 1 7 7 : : 0 0 2 4 o p p t t / o m m e e k k a a - - b v a o c l k u u m p e - s 2 - 0 2 2 0 5 2 1 5 0 1 1 0 6 1 . 6 t . a t r a . r g . z g z 0
Summary# With this procedure, you can safely migrate Omeka-S in a Docker environment. Key points:
✅ Create two backups : One for configuration files and one for volume data ✅ Create containers before restoring volumes : Prepare volumes with up --no-start ✅ Check environment variable files : Especially hostname settings ✅ Security measures : Essential for public servers This procedure can also be applied to migrating other Docker Compose environments.
Last updated : October 2025